{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rvpBDcdS5TSR"
   },
   "source": [
    "# *fairlib*: A Unified Framework for Assessing and Improving Fairness\n",
    "\n",
    "Xudong Han$^{1}$, &nbsp; Aili Shen$^{1,2, a}$, &nbsp; Yitong Li$^{3}$, &nbsp; Lea Frermann$^{1}$, &nbsp; Timothy Baldwin$^{1,4}$, &nbsp; and &nbsp; Trevor Cohn$^{1}$  \n",
    "\n",
    "$^{1}$ The University of Melbourne\n",
    "\n",
    "$^{2}$ Alexa AI, Amazon\n",
    "\n",
    "$^{3}$ Huawei Technologies Co., Ltd.\n",
    "\n",
    "$^{4}$ MBZUAI\n",
    "\n",
    "<img src=\"https://upload.wikimedia.org/wikipedia/en/thumb/e/ed/Logo_of_the_University_of_Melbourne.svg/330px-Logo_of_the_University_of_Melbourne.svg.png\" height=\"100\"/> &nbsp; &nbsp; &nbsp; &nbsp;\n",
    "<img src=\"https://2019.emnlp.org/assets/images/logos/huawei-logo.png\" height=\"100\"/> &nbsp; &nbsp; &nbsp; &nbsp;\n",
    "<img src=\"https://upload.wikimedia.org/wikipedia/en/5/55/Mohamed_bin_Zayed_University_of_Artificial_Intelligence_logo.png\" height=\"100\"/>\n",
    "\n",
    "---\n",
    "- $^a$ Work carried out at The University of Melbourne\n",
    "- *fairlib* is licensed under the **Apache License 2.0**\n",
    "\n",
    "[GitHub](https://github.com/HanXudong/fairlib), [Docs](https://hanxudong.github.io/fairlib/), [PyPI](https://pypi.org/project/fairlib/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "uwB4au4ievWx"
   },
   "source": [
    "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/HanXudong/fairlib/blob/main/tutorial/fairlib_demo.ipynb)\n",
    "\n",
    "In this video, we will demostrate how to:\n",
    "1.   Install *fairlib*\n",
    "2.   Access fairness benchmark datasets\n",
    "3.   Train a vanilla model without debiasing, and measure fairness\n",
    "4.   Improve fairness with most recent debiasing methods\n",
    "5.   Analyze the results, such as creating tables and figures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "h_KbD9-Xg36Q"
   },
   "source": [
    "## 1. Installation\n",
    "\n",
    "The most straightforward way to install *fairlib* is with pip:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "qS-dfmaWhcqT"
   },
   "outputs": [],
   "source": [
    "!pip install -q fairlib"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "HsYTyYGXnuA5"
   },
   "source": [
    "Check out *fairlib* [documents](https://hanxudong.github.io/fairlib/README.html) for other installation options. \n",
    "\n",
    "After installation, let's import *fairlib*."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "xIzDL6q3hm2b"
   },
   "outputs": [],
   "source": [
    "import fairlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import torch\n",
    "from transformers import BertModel, BertTokenizer\n",
    "import pickle\n",
    "from tqdm import tqdm\n",
    "\n",
    "class BERT_encoder:\n",
    "    def __init__(self, batch_size=128) -> None:\n",
    "        self.batch_size = batch_size\n",
    "        self.model, self.tokenizer = self.load_lm()\n",
    "\n",
    "        self.device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "\n",
    "        self.model = self.model.to(self.device)\n",
    "\n",
    "    \n",
    "    def load_lm(self):\n",
    "        model_class, tokenizer_class, pretrained_weights = (BertModel, BertTokenizer, 'bert-base-uncased')\n",
    "        tokenizer = tokenizer_class.from_pretrained(pretrained_weights)\n",
    "        model = model_class.from_pretrained(pretrained_weights)\n",
    "        return model, tokenizer\n",
    "\n",
    "    def tokenize(self, data):\n",
    "\n",
    "        tokenized_data = []\n",
    "        attention_mask = []\n",
    "        total_n = len(data)\n",
    "        n_iterations = (total_n // self.batch_size) + (total_n % self.batch_size > 0)\n",
    "        for i in tqdm(range(n_iterations)):\n",
    "            row_lists = list(data)[i*self.batch_size:(i+1)*self.batch_size]\n",
    "            tokens = self.tokenizer(row_lists, add_special_tokens=True, padding=True, truncation=True, return_tensors=\"pt\")\n",
    "            input_ids = tokens['input_ids']\n",
    "            masks = tokens['attention_mask']\n",
    "            attention_mask.append(masks)\n",
    "            tokenized_data.append(input_ids)\n",
    "        return tokenized_data, attention_mask\n",
    "\n",
    "    def encode_text(self, data):\n",
    "        all_data_cls = []\n",
    "        all_data_avg = []\n",
    "        total_n = len(data)\n",
    "        n_iterations = (total_n // self.batch_size) + (total_n % self.batch_size > 0)\n",
    "        for i in tqdm(range(n_iterations)):\n",
    "            torch.cuda.empty_cache()\n",
    "            row_lists = list(data)[i*self.batch_size:(i+1)*self.batch_size]\n",
    "            tokens = self.tokenizer(row_lists, add_special_tokens=True, padding=True, truncation=True, return_tensors=\"pt\")\n",
    "            input_ids = tokens['input_ids']\n",
    "            masks = tokens['attention_mask']\n",
    "            with torch.no_grad():\n",
    "                input_ids = input_ids.to(self.device)\n",
    "                mask = masks.to(self.device)\n",
    "                last_hidden_states = self.model(input_ids, mask)[0].detach().cpu()\n",
    "                all_data_avg.append(last_hidden_states.mean(dim=1).numpy())\n",
    "                all_data_cls.append(last_hidden_states[:,0].numpy())\n",
    "                input_ids = input_ids.detach().cpu()\n",
    "        return np.vstack(np.array(all_data_avg)), np.vstack(np.array(all_data_cls))\n",
    "\n",
    "\n",
    "    def encode(self, data):\n",
    "        #tokens, masks = self.tokenize(data)\n",
    "\n",
    "        avg_data, cls_data = self.encode_text(data)\n",
    "\n",
    "        return avg_data, cls_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertModel: ['cls.predictions.bias', 'cls.predictions.transform.dense.bias', 'cls.predictions.transform.LayerNorm.bias', 'cls.predictions.decoder.weight', 'cls.predictions.transform.LayerNorm.weight', 'cls.seq_relationship.weight', 'cls.predictions.transform.dense.weight', 'cls.seq_relationship.bias']\n",
      "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "#from fairlib.datasets.utils.bert_encoding import BERT_encoder\n",
    "\n",
    "encoder = BERT_encoder(128)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "professions = [\"accountant\",\"architect\",\"attorney\",\"chiropractor\",\"comedian\",\"composer\",\"dentist\",\"dietitian\",\"dj\",\"filmmaker\",\"interior_designer\",\"journalist\",\"model\",\"nurse\",\"painter\",\"paralegal\",\"pastor\",\"personal_trainer\",\"photographer\",\"physician\",\"poet\",\"professor\",\"psychologist\",\"rapper\",\"software_engineer\",\"surgeon\",\"teacher\",\"yoga_teacher\"]\n",
    "\n",
    "professions2id = {\n",
    "    j:i for i,j in enumerate(professions)\n",
    "}\n",
    "\n",
    "gender2id = {\n",
    "    \"m\":0,\n",
    "    \"f\":1\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(255710, 7)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 32%|██████████████████████████████████████████▌                                                                                         | 645/1998 [07:19<16:44,  1.35it/s]"
     ]
    }
   ],
   "source": [
    "from pathlib import Path\n",
    "from tqdm import tqdm\n",
    "\n",
    "for split in [\"train\", \"dev\", \"test\"]:\n",
    "    split_df = pd.DataFrame(pd.read_pickle(Path(\"../../data/bios\")/\"{}.pickle\".format(split)))#.iloc[:20000]\n",
    "    print(split_df.shape)\n",
    "    text_data = list(split_df[\"hard_text\"])\n",
    "    avg_data, cls_data = encoder.encode(text_data)\n",
    "    split_df[\"bert_avg_SE\"] = list(avg_data)\n",
    "    split_df[\"bert_cls_SE\"] = list(cls_data)\n",
    "    split_df[\"gender_class\"] = split_df[\"g\"].map(gender2id)\n",
    "    split_df[\"profession_class\"] = split_df[\"p\"].map(professions2id)\n",
    "\n",
    "    split_df.to_pickle(Path(\"../../data/bios\") / \"bios_{}_df.pkl\".format(split))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "4CyKAiw8g_4X"
   },
   "source": [
    "## 2. Build a dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "aG9Jntejh2yF"
   },
   "source": [
    "*fairlib* provides simple APIs to access fairness benchmark datasets that are publicly available and under strict ethical guidelines.\n",
    "\n",
    "In this video, we will be using the preprocessed [Moji](https://github.com/shauli-ravfogel/nullspace_projection/blob/master/download_data.sh) dataset, where each tweet is annotated with a binary sentiment label (happy vs sad) and a binary race label (AAE vs SAE).\n",
    "Original tweets are encoded with the pre-trained [DeepMoji model](https://github.com/bfelbo/DeepMoji) as 2304d vectors.\n",
    "\n",
    "Followings are random examples from the Moji dataset.\n",
    "\n",
    "| Text | Sentiment | Race |\n",
    "| ---- | --------- | ---- |\n",
    "| Dfl somebody said to me yesterday that how can u u have a iPhone or an S3 an ur phone off dfl | Positive | AAE|\n",
    "| smh I bet maybe u just don't care bout poor boo no more | Negative | AAE |\n",
    "| I actually put jeans on today and I already wanna go put on leggings or yogas | Positive | SAE |\n",
    "| I'm sitting next to the most awkward couple on the plane like they are making out and holding hands , I just can't | Negative | SAE |\n",
    "\n",
    "See [here](https://github.com/HanXudong/fairlib/tree/main/fairlib/datasets) for other avaliable datasets, including texts, images, and structured inputs.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "pfcw07UCiMqj"
   },
   "outputs": [],
   "source": [
    "from fairlib import datasets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 214,
     "referenced_widgets": [
      "37c4e040cfea4f8c948c358014f0cd00",
      "74be6f341a894c7682aad6de3b63c4cc",
      "b9a94eeed9d241a4be13e1ab3b2540d8",
      "88d78f31f08b48608809cd0a211a1fdb",
      "155d359ac2d749169a0d52c591f0d8ea",
      "79aacc7e95bd41d1a7491d300ce44408",
      "a993fd47b6a24182a0769207fe5896ff",
      "05c0c0bae60a4c958f6571576dfcd470",
      "08b65a34ffbf43fa94aa81bdfa88a839",
      "a99b784af7c747cb92b304e024cb45e7",
      "a826fe75b14e466d9fbff54cd4fd78c7",
      "686ff88b3e02409db49eef590197e51f",
      "5ae45a0c9008496fb0e4347da96546d5",
      "9dd2932943e24383a4cff1cc6df0fad4",
      "c9f3ba4aa2c2405faf9ecb026b233379",
      "0f5858dbd88d4a8f95d74f8c2f3df4ab",
      "a43ba65c1600446f899efa4e5372f0ad",
      "c2d89f3eb92e40b684686fac9636537a",
      "2821e713f31b46efa2e90d699e0dc83c",
      "07824111751947f1af0e3f3409cf8897",
      "54535b16f2d3462bad55b950d081f572",
      "be8088868f094bee8ad0ca7a1e74e122",
      "b5e8af5d11954cdbbdb77bdb205e31ec",
      "7041c8004d7f4c2b9f22b200f60394bd",
      "0598af4dcad946c3b5b27dc73dafda3a",
      "2980b492e74549938e9f0fb78237923d",
      "3c29777eb0e64033896044125f33ca3b",
      "842e1f5c6d43472b9cb8690e3d2b6bc0",
      "76c8de3762d948679a2241e3651476a5",
      "101c33c843274092888ae0b593e11084",
      "267c639152c247bfbb01672e66107207",
      "5456c00ca1a44bf3b7bece88b94250d3",
      "f490accfcad641b19c214d9ea5bc422d",
      "1f572cf5213c400f86b91e4cb9c5ab03",
      "223a07676d284ddc9f88eb557535be33",
      "6d8e56dae7c74b51870b8f205f9c2a51",
      "30564c39e4fc42f9a62391eb4ccbeef5",
      "5cf1fb49370f458aa4b34f1d4654c3c0",
      "9f28af0718b04e7489b8d81c554b8f0a",
      "56054bc9fdae4f4aa8d1dd3b2230349e",
      "c8f1fe9931524c4cb344fd8551e8d918",
      "c3ad77793bd342308f942eeaf7c6db5e",
      "7bc47b609afe4320a0c754fde01ba508",
      "29a861a0df0549bcba58054ef6558903"
     ]
    },
    "id": "w4Rzy0Plh8Wc",
    "outputId": "a029a396-9a15-42c5-c072-d4e8c4297f73"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertModel: ['cls.predictions.decoder.weight', 'cls.predictions.transform.LayerNorm.bias', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.dense.weight', 'cls.predictions.bias', 'cls.seq_relationship.weight', 'cls.predictions.transform.dense.bias']\n",
      "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
      "100%|███████████████████████████████████████████████████████████████████████████████| 1469/1469 [03:27<00:00,  7.08it/s]\n",
      "1469it [08:27,  2.90it/s]\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████| 164/164 [00:22<00:00,  7.14it/s]\n",
      "164it [00:54,  3.03it/s]\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████| 182/182 [00:25<00:00,  7.17it/s]\n",
      "182it [01:00,  3.03it/s]\n"
     ]
    }
   ],
   "source": [
    "datasets.prepare_dataset(\"sepsis\", \"../../../../datasets/sepsis/sex\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertModel: ['cls.predictions.decoder.weight', 'cls.predictions.transform.LayerNorm.bias', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.dense.weight', 'cls.predictions.bias', 'cls.seq_relationship.weight', 'cls.predictions.transform.dense.bias']\n",
      "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
      "100%|███████████████████████████████████████████████████████████████████████████████| 1469/1469 [03:30<00:00,  6.97it/s]\n",
      "1469it [08:26,  2.90it/s]\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████| 164/164 [00:24<00:00,  6.71it/s]\n",
      "164it [00:55,  2.98it/s]\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████| 182/182 [00:28<00:00,  6.34it/s]\n",
      "182it [01:00,  3.01it/s]\n"
     ]
    }
   ],
   "source": [
    "datasets.prepare_dataset(\"sepsis\", \"../../../../datasets/sepsis/ethnicity\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QGz09F1ZKbtp"
   },
   "source": [
    "Datasets will be downloaded and saved to `data/deepmoji`, and then be used to create training, validation, and test splits as previous work."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "rskM4wIGcUYs",
    "outputId": "b9059471-80e3-4688-8b84-4d5d82ec612f"
   },
   "outputs": [],
   "source": [
    "datasets.name2class.keys()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "63FOrgLqg_16"
   },
   "source": [
    "## 3. Train a vanilla model without debiasing"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XVwBSSg9nWKj"
   },
   "source": [
    "### Specify hyperparameters\n",
    "\n",
    "By default, *fairlib* trains `vanilla` models without debiasing. \n",
    "\n",
    "Here we specify the experiment id (`exp_id = vanilla`), which identify the directory for saving experimental results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "DFMtY4SUn8Kh",
    "outputId": "554c40f9-58bd-40f1-854d-80c73edae323"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:root:Unexpected args: ['-f', '/root/.local/share/jupyter/runtime/kernel-8eb44448-ab67-4429-be7a-d5fc3fe3b2ce.json']\n",
      "INFO:root:Logging to ./results/dev/Moji/vanilla/output.log\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-07-21 06:53:09 [INFO ]  ======================================== 2022-07-21 06:53:09 ========================================\n",
      "2022-07-21 06:53:09 [INFO ]  Base directory is ./results/dev/Moji/vanilla\n",
      "Loaded data shapes: (99998, 2304), (99998,), (99998,)\n",
      "Loaded data shapes: (8000, 2304), (8000,), (8000,)\n",
      "Loaded data shapes: (7998, 2304), (7998,), (7998,)\n"
     ]
    }
   ],
   "source": [
    "args = {\n",
    "    # The name of the dataset, corresponding dataloader will be used,\n",
    "    \"dataset\":  \"Moji\",\n",
    "\n",
    "    # Specifiy the path to the input data\n",
    "    \"data_dir\": \"data/deepmoji\",\n",
    "\n",
    "    # Device for computing, -1 is the cpu; non-negative numbers indicate GPU id.\n",
    "    \"device_id\":    -1,\n",
    "\n",
    "    # Give a name to the exp, which will be used in the path\n",
    "    \"exp_id\":\"vanilla\",\n",
    "}\n",
    "\n",
    "# Init the argument\n",
    "options = fairlib.BaseOptions()\n",
    "state = options.get_state(args=args, silence=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dbsNCVU9oWjJ"
   },
   "source": [
    "`state` contains a list of hyperparameters for experiments. Besides, other components that are needed, such as dataloaders, will also automatically be initialized "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cy2iQa1DWrjP"
   },
   "source": [
    "### Initialize a model\n",
    "\n",
    "The default architecutre is a 3-layer MLP classifier with Tanh activation functions in between: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "wzoC4A7kNP2D",
    "outputId": "602573e8-10dd-4d49-e50d-e303e1ffd005"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "300 2 Tanh\n"
     ]
    }
   ],
   "source": [
    "print(state.hidden_size, state.n_hidden, state.activation_function)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rqKsSFC8Ngn8"
   },
   "source": [
    "Users can easily specify model architecutres in the option. \n",
    "Please see the [model architecture section](https://github.com/HanXudong/fairlib/blob/main/docs/usage.md#basic-operation) for more details about the hyperparameters corresponding to the model architecture."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "b-uucdt3oWSD",
    "outputId": "a70a4288-e667-4ff1-b725-fd5e33072a48"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-07-21 06:53:10 [INFO ]  MLP( \n",
      "2022-07-21 06:53:10 [INFO ]    (output_layer): Linear(in_features=300, out_features=2, bias=True)\n",
      "2022-07-21 06:53:10 [INFO ]    (AF): Tanh()\n",
      "2022-07-21 06:53:10 [INFO ]    (hidden_layers): ModuleList(\n",
      "2022-07-21 06:53:10 [INFO ]      (0): Linear(in_features=2304, out_features=300, bias=True)\n",
      "2022-07-21 06:53:10 [INFO ]      (1): Tanh()\n",
      "2022-07-21 06:53:10 [INFO ]      (2): Linear(in_features=300, out_features=300, bias=True)\n",
      "2022-07-21 06:53:10 [INFO ]      (3): Tanh()\n",
      "2022-07-21 06:53:10 [INFO ]    )\n",
      "2022-07-21 06:53:10 [INFO ]    (criterion): CrossEntropyLoss()\n",
      "2022-07-21 06:53:10 [INFO ]  )\n",
      "2022-07-21 06:53:10 [INFO ]  Total number of parameters: 782402 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "fairlib.utils.seed_everything(2022)\n",
    "\n",
    "# Init Model\n",
    "model = fairlib.networks.get_main_model(state)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "J25rggXyodtP"
   },
   "source": [
    "### Train a model\n",
    "\n",
    "\n",
    "A list of hyperparameters has been predefined in *fairlib*, so we can now directly train a model with the model class's built-in `train_self` method.\n",
    "\n",
    "Please see the [link](https://github.com/HanXudong/fairlib/blob/23a32a6f4b3db00134bd651a6e0aa0747ba0adc2/fairlib/src/base_options.py#L162-L200) for all hyperparameters associated with model training."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "xcYyppDKobnS",
    "outputId": "7f5ea929-82bf-447e-f571-416465b0b63d"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-07-21 06:53:10 [INFO ]  Epoch:    0 [      0/  99998 ( 0%)]\tLoss: 0.6907\t Data Time: 0.06s\tTrain Time: 0.18s\n",
      "2022-07-21 06:53:14 [INFO ]  Epoch:    0 [  51200/  99998 (51%)]\tLoss: 0.4075\t Data Time: 0.44s\tTrain Time: 3.34s\n",
      "2022-07-21 06:53:18 [INFO ]  Evaluation at Epoch 0\n",
      "2022-07-21 06:53:18 [INFO ]  Validation accuracy: 71.44\tmacro_fscore: 71.35\tmicro_fscore: 71.44\tTPR_GAP: 39.59\tFPR_GAP: 39.59\tPPR_GAP: 38.67\t\n",
      "2022-07-21 06:53:18 [INFO ]  Test accuracy: 71.21\tmacro_fscore: 71.12\tmicro_fscore: 71.21\tTPR_GAP: 39.42\tFPR_GAP: 39.42\tPPR_GAP: 38.49\t\n",
      "2022-07-21 06:53:18 [INFO ]  Epoch:    1 [      0/  99998 ( 0%)]\tLoss: 0.4195\t Data Time: 0.01s\tTrain Time: 0.07s\n",
      "2022-07-21 06:53:22 [INFO ]  Epoch:    1 [  51200/  99998 (51%)]\tLoss: 0.3780\t Data Time: 0.42s\tTrain Time: 3.29s\n",
      "2022-07-21 06:53:26 [INFO ]  Evaluation at Epoch 1\n",
      "2022-07-21 06:53:26 [INFO ]  Validation accuracy: 72.10\tmacro_fscore: 72.06\tmicro_fscore: 72.10\tTPR_GAP: 37.69\tFPR_GAP: 37.69\tPPR_GAP: 37.00\t\n",
      "2022-07-21 06:53:26 [INFO ]  Test accuracy: 71.72\tmacro_fscore: 71.68\tmicro_fscore: 71.72\tTPR_GAP: 37.11\tFPR_GAP: 37.11\tPPR_GAP: 36.41\t\n",
      "2022-07-21 06:53:27 [INFO ]  Epoch:    2 [      0/  99998 ( 0%)]\tLoss: 0.3608\t Data Time: 0.01s\tTrain Time: 0.07s\n",
      "2022-07-21 06:53:30 [INFO ]  Epoch:    2 [  51200/  99998 (51%)]\tLoss: 0.3567\t Data Time: 0.42s\tTrain Time: 3.29s\n",
      "2022-07-21 06:53:34 [INFO ]  Epochs since last improvement: 1\n",
      "2022-07-21 06:53:34 [INFO ]  Evaluation at Epoch 2\n",
      "2022-07-21 06:53:34 [INFO ]  Validation accuracy: 71.53\tmacro_fscore: 71.44\tmicro_fscore: 71.53\tTPR_GAP: 39.40\tFPR_GAP: 39.40\tPPR_GAP: 38.40\t\n",
      "2022-07-21 06:53:34 [INFO ]  Test accuracy: 71.38\tmacro_fscore: 71.28\tmicro_fscore: 71.38\tTPR_GAP: 39.07\tFPR_GAP: 39.07\tPPR_GAP: 37.99\t\n",
      "2022-07-21 06:53:35 [INFO ]  Epoch:    3 [      0/  99998 ( 0%)]\tLoss: 0.3584\t Data Time: 0.01s\tTrain Time: 0.07s\n",
      "2022-07-21 06:53:38 [INFO ]  Epoch:    3 [  51200/  99998 (51%)]\tLoss: 0.3430\t Data Time: 0.42s\tTrain Time: 3.28s\n",
      "2022-07-21 06:53:42 [INFO ]  Epochs since last improvement: 2\n",
      "2022-07-21 06:53:42 [INFO ]  Evaluation at Epoch 3\n",
      "2022-07-21 06:53:43 [INFO ]  Validation accuracy: 71.08\tmacro_fscore: 70.73\tmicro_fscore: 71.08\tTPR_GAP: 41.08\tFPR_GAP: 41.08\tPPR_GAP: 38.75\t\n",
      "2022-07-21 06:53:43 [INFO ]  Test accuracy: 70.87\tmacro_fscore: 70.49\tmicro_fscore: 70.87\tTPR_GAP: 40.67\tFPR_GAP: 40.67\tPPR_GAP: 38.42\t\n",
      "2022-07-21 06:53:43 [INFO ]  Epoch:    4 [      0/  99998 ( 0%)]\tLoss: 0.3578\t Data Time: 0.02s\tTrain Time: 0.07s\n",
      "2022-07-21 06:53:46 [INFO ]  Epoch:    4 [  51200/  99998 (51%)]\tLoss: 0.3881\t Data Time: 0.44s\tTrain Time: 3.36s\n",
      "2022-07-21 06:53:50 [INFO ]  Epochs since last improvement: 3\n",
      "2022-07-21 06:53:50 [INFO ]  Evaluation at Epoch 4\n",
      "2022-07-21 06:53:51 [INFO ]  Validation accuracy: 72.06\tmacro_fscore: 71.96\tmicro_fscore: 72.06\tTPR_GAP: 38.04\tFPR_GAP: 38.04\tPPR_GAP: 36.87\t\n",
      "2022-07-21 06:53:51 [INFO ]  Test accuracy: 71.72\tmacro_fscore: 71.61\tmicro_fscore: 71.72\tTPR_GAP: 38.09\tFPR_GAP: 38.09\tPPR_GAP: 36.96\t\n",
      "2022-07-21 06:53:51 [INFO ]  Epoch:    5 [      0/  99998 ( 0%)]\tLoss: 0.4008\t Data Time: 0.02s\tTrain Time: 0.07s\n",
      "2022-07-21 06:53:54 [INFO ]  Epoch:    5 [  51200/  99998 (51%)]\tLoss: 0.3393\t Data Time: 0.43s\tTrain Time: 3.29s\n",
      "2022-07-21 06:53:58 [INFO ]  Epochs since last improvement: 4\n",
      "2022-07-21 06:53:58 [INFO ]  Evaluation at Epoch 5\n",
      "2022-07-21 06:53:59 [INFO ]  Validation accuracy: 71.44\tmacro_fscore: 71.41\tmicro_fscore: 71.44\tTPR_GAP: 40.50\tFPR_GAP: 40.50\tPPR_GAP: 39.97\t\n",
      "2022-07-21 06:53:59 [INFO ]  Test accuracy: 71.13\tmacro_fscore: 71.11\tmicro_fscore: 71.13\tTPR_GAP: 39.69\tFPR_GAP: 39.69\tPPR_GAP: 39.19\t\n",
      "2022-07-21 06:53:59 [INFO ]  Epoch:    6 [      0/  99998 ( 0%)]\tLoss: 0.3890\t Data Time: 0.01s\tTrain Time: 0.07s\n",
      "2022-07-21 06:54:03 [INFO ]  Epoch:    6 [  51200/  99998 (51%)]\tLoss: 0.3668\t Data Time: 0.44s\tTrain Time: 3.32s\n",
      "2022-07-21 06:54:07 [INFO ]  Epochs since last improvement: 5\n",
      "2022-07-21 06:54:07 [INFO ]  Evaluation at Epoch 6\n",
      "2022-07-21 06:54:07 [INFO ]  Validation accuracy: 71.96\tmacro_fscore: 71.92\tmicro_fscore: 71.96\tTPR_GAP: 37.52\tFPR_GAP: 37.52\tPPR_GAP: 36.82\t\n",
      "2022-07-21 06:54:07 [INFO ]  Test accuracy: 72.04\tmacro_fscore: 72.00\tmicro_fscore: 72.04\tTPR_GAP: 36.75\tFPR_GAP: 36.75\tPPR_GAP: 36.01\t\n"
     ]
    }
   ],
   "source": [
    "model.train_self()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "S5R16F_ro1mp"
   },
   "source": [
    "After each iteration, a subset of evaluation results over the validation set and test set will be logged, including metrics for both performance and fairness.\n",
    "\n",
    "It can be seen that the vanilla model achieves around 40\\% TPR GAP."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "jImF3cBEg_t7"
   },
   "source": [
    "## 4. Improve Fairness\n",
    "\n",
    "To mitigate bias, we show an example of employing BTEO ([Han et al., 2021a](https://arxiv.org/abs/2109.08253)) and adversarial training ([Li et al., 2018](https://arxiv.org/abs/1805.06093)) simultaneously.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "m_f6oMDMpq0r"
   },
   "source": [
    "### Enable debiasing\n",
    "\n",
    "The only difference for debebiasing is to specify corresponding arguments, as shown in the following cell. Everything else are identical to the standard training.\n",
    "\n",
    "- A list of supported bias mitigation methods is shown [here](https://github.com/HanXudong/fairlib/blob/main/docs/supported_bias_mitigation_algorithms.md).\n",
    "- The [usage](https://hanxudong.github.io/fairlib/tutorial_usage.html) introduces further options associated with each debiasing method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7piRv-qrpvdn",
    "outputId": "02b2a3d9-6fa6-4fb7-ac4c-6826971196f6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-07-21 06:54:07 [INFO ]  Unexpected args: ['-f', '/root/.local/share/jupyter/runtime/kernel-8eb44448-ab67-4429-be7a-d5fc3fe3b2ce.json']\n",
      "2022-07-21 06:54:07 [INFO ]  Logging to ./results/dev/Moji/BT_Adv/output.log\n",
      "2022-07-21 06:54:07 [INFO ]  ======================================== 2022-07-21 06:54:07 ========================================\n",
      "2022-07-21 06:54:07 [INFO ]  Base directory is ./results/dev/Moji/BT_Adv\n",
      "Loaded data shapes: (39996, 2304), (39996,), (39996,)\n",
      "Loaded data shapes: (8000, 2304), (8000,), (8000,)\n",
      "Loaded data shapes: (7998, 2304), (7998,), (7998,)\n",
      "2022-07-21 06:54:16 [INFO ]  SubDiscriminator( \n",
      "2022-07-21 06:54:16 [INFO ]    (grad_rev): GradientReversal()\n",
      "2022-07-21 06:54:16 [INFO ]    (output_layer): Linear(in_features=300, out_features=2, bias=True)\n",
      "2022-07-21 06:54:16 [INFO ]    (AF): ReLU()\n",
      "2022-07-21 06:54:16 [INFO ]    (hidden_layers): ModuleList(\n",
      "2022-07-21 06:54:16 [INFO ]      (0): Linear(in_features=300, out_features=300, bias=True)\n",
      "2022-07-21 06:54:16 [INFO ]      (1): ReLU()\n",
      "2022-07-21 06:54:16 [INFO ]      (2): Linear(in_features=300, out_features=300, bias=True)\n",
      "2022-07-21 06:54:16 [INFO ]      (3): ReLU()\n",
      "2022-07-21 06:54:16 [INFO ]    )\n",
      "2022-07-21 06:54:16 [INFO ]    (criterion): CrossEntropyLoss()\n",
      "2022-07-21 06:54:16 [INFO ]  )\n",
      "2022-07-21 06:54:16 [INFO ]  Total number of parameters: 181202 \n",
      "\n",
      "2022-07-21 06:54:16 [INFO ]  Discriminator built!\n",
      "2022-07-21 06:54:16 [INFO ]  MLP( \n",
      "2022-07-21 06:54:16 [INFO ]    (output_layer): Linear(in_features=300, out_features=2, bias=True)\n",
      "2022-07-21 06:54:16 [INFO ]    (AF): Tanh()\n",
      "2022-07-21 06:54:16 [INFO ]    (hidden_layers): ModuleList(\n",
      "2022-07-21 06:54:16 [INFO ]      (0): Linear(in_features=2304, out_features=300, bias=True)\n",
      "2022-07-21 06:54:16 [INFO ]      (1): Tanh()\n",
      "2022-07-21 06:54:16 [INFO ]      (2): Linear(in_features=300, out_features=300, bias=True)\n",
      "2022-07-21 06:54:16 [INFO ]      (3): Tanh()\n",
      "2022-07-21 06:54:16 [INFO ]    )\n",
      "2022-07-21 06:54:16 [INFO ]    (criterion): CrossEntropyLoss()\n",
      "2022-07-21 06:54:16 [INFO ]  )\n",
      "2022-07-21 06:54:16 [INFO ]  Total number of parameters: 782402 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "debiasing_args = args.copy()\n",
    "\n",
    "# Update the experiment name\n",
    "debiasing_args[\"exp_id\"] = \"BT_Adv\"\n",
    "\n",
    "# Perform adversarial training if True\n",
    "debiasing_args[\"adv_debiasing\"] = True\n",
    "\n",
    "# Specify the hyperparameters for Balanced Training\n",
    "debiasing_args[\"BT\"] = \"Downsampling\"\n",
    "debiasing_args[\"BTObj\"] = \"EO\"\n",
    "\n",
    "debias_options = fairlib.BaseOptions()\n",
    "debias_state = debias_options.get_state(args=debiasing_args, silence=True)\n",
    "\n",
    "fairlib.utils.seed_everything(2022)\n",
    "\n",
    "debias_model = fairlib.networks.get_main_model(debias_state)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "sZESs_zIp4X1"
   },
   "source": [
    "It can be seen from the last cell that the training dataset size is smaller than before (40k verse 100k) due to the downsampling for balanced training, and an MLP adversary is initialized for adversarial debiasing."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dknbUzmjYMbm"
   },
   "source": [
    "### Mitigate bias"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Nnb8e-Zkp2Wd",
    "outputId": "713e3ae0-2dfe-47fb-b166-d347e7e44f18"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2022-07-21 06:54:17 [INFO ]  Epoch:    0 [      0/  39996 ( 0%)]\tLoss: 0.0003\t Data Time: 0.02s\tTrain Time: 0.22s\n",
      "2022-07-21 06:54:25 [INFO ]  Evaluation at Epoch 0\n",
      "2022-07-21 06:54:26 [INFO ]  Validation accuracy: 73.72\tmacro_fscore: 73.08\tmicro_fscore: 73.72\tTPR_GAP: 19.20\tFPR_GAP: 19.20\tPPR_GAP: 16.80\t\n",
      "2022-07-21 06:54:26 [INFO ]  Test accuracy: 73.59\tmacro_fscore: 72.98\tmicro_fscore: 73.59\tTPR_GAP: 20.70\tFPR_GAP: 20.70\tPPR_GAP: 17.86\t\n",
      "2022-07-21 06:54:26 [INFO ]  Epoch:    1 [      0/  39996 ( 0%)]\tLoss: -0.1368\t Data Time: 0.01s\tTrain Time: 0.20s\n",
      "2022-07-21 06:54:34 [INFO ]  Epochs since last improvement: 1\n",
      "2022-07-21 06:54:34 [INFO ]  Evaluation at Epoch 1\n",
      "2022-07-21 06:54:35 [INFO ]  Validation accuracy: 68.96\tmacro_fscore: 67.36\tmicro_fscore: 68.96\tTPR_GAP: 10.57\tFPR_GAP: 10.57\tPPR_GAP: 4.67\t\n",
      "2022-07-21 06:54:35 [INFO ]  Test accuracy: 68.89\tmacro_fscore: 67.33\tmicro_fscore: 68.89\tTPR_GAP: 11.46\tFPR_GAP: 11.46\tPPR_GAP: 6.46\t\n",
      "2022-07-21 06:54:35 [INFO ]  Epoch:    2 [      0/  39996 ( 0%)]\tLoss: -0.1266\t Data Time: 0.01s\tTrain Time: 0.20s\n",
      "2022-07-21 06:54:43 [INFO ]  Evaluation at Epoch 2\n",
      "2022-07-21 06:54:44 [INFO ]  Validation accuracy: 74.94\tmacro_fscore: 74.68\tmicro_fscore: 74.94\tTPR_GAP: 14.13\tFPR_GAP: 14.13\tPPR_GAP: 11.37\t\n",
      "2022-07-21 06:54:44 [INFO ]  Test accuracy: 75.54\tmacro_fscore: 75.33\tmicro_fscore: 75.54\tTPR_GAP: 14.66\tFPR_GAP: 14.66\tPPR_GAP: 11.41\t\n",
      "2022-07-21 06:54:44 [INFO ]  Epoch:    3 [      0/  39996 ( 0%)]\tLoss: -0.1809\t Data Time: 0.01s\tTrain Time: 0.20s\n",
      "2022-07-21 06:54:52 [INFO ]  Evaluation at Epoch 3\n",
      "2022-07-21 06:54:53 [INFO ]  Validation accuracy: 74.99\tmacro_fscore: 74.98\tmicro_fscore: 74.99\tTPR_GAP: 12.09\tFPR_GAP: 12.09\tPPR_GAP: 8.67\t\n",
      "2022-07-21 06:54:53 [INFO ]  Test accuracy: 75.47\tmacro_fscore: 75.47\tmicro_fscore: 75.47\tTPR_GAP: 11.43\tFPR_GAP: 11.43\tPPR_GAP: 7.95\t\n",
      "2022-07-21 06:54:53 [INFO ]  Epoch:    4 [      0/  39996 ( 0%)]\tLoss: -0.1584\t Data Time: 0.01s\tTrain Time: 0.20s\n",
      "2022-07-21 06:55:01 [INFO ]  Evaluation at Epoch 4\n",
      "2022-07-21 06:55:02 [INFO ]  Validation accuracy: 75.36\tmacro_fscore: 75.34\tmicro_fscore: 75.36\tTPR_GAP: 12.23\tFPR_GAP: 12.23\tPPR_GAP: 9.27\t\n",
      "2022-07-21 06:55:02 [INFO ]  Test accuracy: 75.73\tmacro_fscore: 75.70\tmicro_fscore: 75.73\tTPR_GAP: 13.03\tFPR_GAP: 13.03\tPPR_GAP: 9.38\t\n",
      "2022-07-21 06:55:02 [INFO ]  Epoch:    5 [      0/  39996 ( 0%)]\tLoss: -0.1741\t Data Time: 0.02s\tTrain Time: 0.20s\n",
      "2022-07-21 06:55:10 [INFO ]  Epochs since last improvement: 1\n",
      "2022-07-21 06:55:10 [INFO ]  Evaluation at Epoch 5\n",
      "2022-07-21 06:55:11 [INFO ]  Validation accuracy: 75.22\tmacro_fscore: 75.15\tmicro_fscore: 75.22\tTPR_GAP: 10.86\tFPR_GAP: 10.86\tPPR_GAP: 6.30\t\n",
      "2022-07-21 06:55:11 [INFO ]  Test accuracy: 75.44\tmacro_fscore: 75.36\tmicro_fscore: 75.44\tTPR_GAP: 10.99\tFPR_GAP: 10.99\tPPR_GAP: 6.50\t\n",
      "2022-07-21 06:55:11 [INFO ]  Epoch:    6 [      0/  39996 ( 0%)]\tLoss: -0.2291\t Data Time: 0.01s\tTrain Time: 0.20s\n",
      "2022-07-21 06:55:19 [INFO ]  Epochs since last improvement: 2\n",
      "2022-07-21 06:55:19 [INFO ]  Evaluation at Epoch 6\n",
      "2022-07-21 06:55:20 [INFO ]  Validation accuracy: 74.94\tmacro_fscore: 74.93\tmicro_fscore: 74.94\tTPR_GAP: 9.14\tFPR_GAP: 9.14\tPPR_GAP: 1.42\t\n",
      "2022-07-21 06:55:20 [INFO ]  Test accuracy: 75.17\tmacro_fscore: 75.17\tmicro_fscore: 75.17\tTPR_GAP: 9.69\tFPR_GAP: 9.69\tPPR_GAP: 2.85\t\n",
      "2022-07-21 06:55:20 [INFO ]  Epoch:    7 [      0/  39996 ( 0%)]\tLoss: -0.1665\t Data Time: 0.01s\tTrain Time: 0.21s\n",
      "2022-07-21 06:55:28 [INFO ]  Epochs since last improvement: 3\n",
      "2022-07-21 06:55:28 [INFO ]  Evaluation at Epoch 7\n",
      "2022-07-21 06:55:29 [INFO ]  Validation accuracy: 74.98\tmacro_fscore: 74.97\tmicro_fscore: 74.98\tTPR_GAP: 9.40\tFPR_GAP: 9.40\tPPR_GAP: 5.25\t\n",
      "2022-07-21 06:55:29 [INFO ]  Test accuracy: 75.38\tmacro_fscore: 75.38\tmicro_fscore: 75.38\tTPR_GAP: 10.85\tFPR_GAP: 10.85\tPPR_GAP: 6.88\t\n",
      "2022-07-21 06:55:29 [INFO ]  Epoch:    8 [      0/  39996 ( 0%)]\tLoss: -0.2003\t Data Time: 0.01s\tTrain Time: 0.21s\n",
      "2022-07-21 06:55:37 [INFO ]  Epochs since last improvement: 4\n",
      "2022-07-21 06:55:37 [INFO ]  Evaluation at Epoch 8\n",
      "2022-07-21 06:55:38 [INFO ]  Validation accuracy: 74.04\tmacro_fscore: 73.54\tmicro_fscore: 74.04\tTPR_GAP: 10.18\tFPR_GAP: 10.18\tPPR_GAP: 6.12\t\n",
      "2022-07-21 06:55:38 [INFO ]  Test accuracy: 74.22\tmacro_fscore: 73.75\tmicro_fscore: 74.22\tTPR_GAP: 10.17\tFPR_GAP: 10.17\tPPR_GAP: 6.96\t\n",
      "2022-07-21 06:55:38 [INFO ]  Epoch:    9 [      0/  39996 ( 0%)]\tLoss: -0.2118\t Data Time: 0.01s\tTrain Time: 0.21s\n",
      "2022-07-21 06:55:46 [INFO ]  Epochs since last improvement: 5\n",
      "2022-07-21 06:55:46 [INFO ]  Evaluation at Epoch 9\n",
      "2022-07-21 06:55:47 [INFO ]  Validation accuracy: 73.14\tmacro_fscore: 72.87\tmicro_fscore: 73.14\tTPR_GAP: 9.11\tFPR_GAP: 9.11\tPPR_GAP: 5.97\t\n",
      "2022-07-21 06:55:47 [INFO ]  Test accuracy: 73.36\tmacro_fscore: 73.14\tmicro_fscore: 73.36\tTPR_GAP: 8.46\tFPR_GAP: 8.46\tPPR_GAP: 6.07\t\n"
     ]
    }
   ],
   "source": [
    "debias_model.train_self()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MgPMs5Eog_rP"
   },
   "source": [
    "## 5. Analyze the results\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "5HTIeDVis-sv"
   },
   "outputs": [],
   "source": [
    "from fairlib import analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "NTdX9jSPqupy"
   },
   "source": [
    "Here we define a list of hyperparameters that will be repeatedly used for analysis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "id": "Xc-XQvX5pHlX"
   },
   "outputs": [],
   "source": [
    "Shared_options = {\n",
    "    # Random seed\n",
    "    \"seed\": 2022,\n",
    "    \n",
    "    # The name of the dataset, corresponding dataloader will be used,\n",
    "    \"dataset\":  \"Moji\",\n",
    "\n",
    "    # Specifiy the path to the input data\n",
    "    \"data_dir\": \"data/deepmoji\",\n",
    "\n",
    "    # Device for computing, -1 is the cpu; non-negative numbers indicate GPU id.\n",
    "    \"device_id\":    -1,\n",
    "\n",
    "    # The default path for saving experimental results\n",
    "    \"results_dir\":  \"results\",\n",
    "\n",
    "    # Will be used for saving experimental results\n",
    "    \"project_dir\":  \"dev\",\n",
    "\n",
    "    # We will focusing on TPR GAP, implying the Equalized Odds for binary classification.\n",
    "    \"GAP_metric_name\":  \"TPR_GAP\",\n",
    "\n",
    "    # The overall performance will be measured as accuracy\n",
    "    \"Performance_metric_name\":  \"accuracy\",\n",
    "\n",
    "    # Model selections are based on distance to optimum, see section 4 in our paper for more details\n",
    "    \"selection_criterion\":  \"DTO\",\n",
    "\n",
    "    # Default dirs for saving checkpoints\n",
    "    \"checkpoint_dir\":   \"models\",\n",
    "    \"checkpoint_name\":  \"checkpoint_epoch\",\n",
    "\n",
    "    # Loading experimental results\n",
    "    \"n_jobs\":   1,\n",
    "    \n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mNgGp2iqs3-L"
   },
   "source": [
    "### Epoch Selection\n",
    "\n",
    "Here we demostrate the usage of DTO for epoch selection (i.e., post-hoc early stopping).\n",
    "`model_selection` retrieves experimental results for a single method, selects the desired **epoch** for each run, and saves the resulting df for a later process."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 164
    },
    "id": "-mhA0ChmtBim",
    "outputId": "2154288d-5bff-46eb-8241-f7cf06f6de8f"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n",
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    0.3s remaining:    0.0s\n",
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    0.3s finished\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "  <div id=\"df-c40046f9-240d-43b7-a414-a7a4b61b37e6\">\n",
       "    <div class=\"colab-df-container\">\n",
       "      <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>epoch</th>\n",
       "      <th>dev_DTO</th>\n",
       "      <th>test_DTO</th>\n",
       "      <th>dev_performance</th>\n",
       "      <th>dev_fairness</th>\n",
       "      <th>test_performance</th>\n",
       "      <th>test_fairness</th>\n",
       "      <th>opt_dir</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BT</th>\n",
       "      <th>BTObj</th>\n",
       "      <th>adv_debiasing</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>NaN</th>\n",
       "      <th>NaN</th>\n",
       "      <th>False</th>\n",
       "      <td>1</td>\n",
       "      <td>0.001907</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.719625</td>\n",
       "      <td>0.624825</td>\n",
       "      <td>0.72043</td>\n",
       "      <td>0.632535</td>\n",
       "      <td>results/dev/Moji/vanilla/opt.yaml</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>\n",
       "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c40046f9-240d-43b7-a414-a7a4b61b37e6')\"\n",
       "              title=\"Convert this dataframe to an interactive table.\"\n",
       "              style=\"display:none;\">\n",
       "        \n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
       "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
       "  </svg>\n",
       "      </button>\n",
       "      \n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      flex-wrap:wrap;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "      <script>\n",
       "        const buttonEl =\n",
       "          document.querySelector('#df-c40046f9-240d-43b7-a414-a7a4b61b37e6 button.colab-df-convert');\n",
       "        buttonEl.style.display =\n",
       "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "        async function convertToInteractive(key) {\n",
       "          const element = document.querySelector('#df-c40046f9-240d-43b7-a414-a7a4b61b37e6');\n",
       "          const dataTable =\n",
       "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                     [key], {});\n",
       "          if (!dataTable) return;\n",
       "\n",
       "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "            + ' to learn more about interactive tables.';\n",
       "          element.innerHTML = '';\n",
       "          dataTable['output_type'] = 'display_data';\n",
       "          await google.colab.output.renderOutput(dataTable, element);\n",
       "          const docLink = document.createElement('div');\n",
       "          docLink.innerHTML = docLinkHtml;\n",
       "          element.appendChild(docLink);\n",
       "        }\n",
       "      </script>\n",
       "    </div>\n",
       "  </div>\n",
       "  "
      ],
      "text/plain": [
       "                         epoch   dev_DTO  test_DTO  dev_performance  \\\n",
       "BT  BTObj adv_debiasing                                               \n",
       "NaN NaN   False              1  0.001907       0.0         0.719625   \n",
       "\n",
       "                         dev_fairness  test_performance  test_fairness  \\\n",
       "BT  BTObj adv_debiasing                                                  \n",
       "NaN NaN   False              0.624825           0.72043       0.632535   \n",
       "\n",
       "                                                   opt_dir  \n",
       "BT  BTObj adv_debiasing                                     \n",
       "NaN NaN   False          results/dev/Moji/vanilla/opt.yaml  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "analysis.model_selection(\n",
    "    # exp_id started with model_id will be treated as the same method, e.g, vanilla, and adv\n",
    "    model_id= (\"vanilla\"),\n",
    "\n",
    "    # the tuned hyperparameters of a methods, which will be used to group multiple runs together.\n",
    "    index_column_names = [\"BT\", \"BTObj\", \"adv_debiasing\"],\n",
    "\n",
    "    # to convenient the further analysis, we will store the resulting DataFrame to the specified path\n",
    "    save_path = r\"results/Vanilla_df.pkl\",\n",
    "\n",
    "    # Follwoing options are predefined\n",
    "    results_dir= Shared_options[\"results_dir\"],\n",
    "    project_dir= Shared_options[\"project_dir\"]+\"/\"+Shared_options[\"dataset\"],\n",
    "    GAP_metric_name = Shared_options[\"GAP_metric_name\"],\n",
    "    Performance_metric_name = Shared_options[\"Performance_metric_name\"],\n",
    "    # We use DTO for epoch selection\n",
    "    selection_criterion = Shared_options[\"selection_criterion\"],\n",
    "    checkpoint_dir= Shared_options[\"checkpoint_dir\"],\n",
    "    checkpoint_name= Shared_options[\"checkpoint_name\"],\n",
    "    # If retrive results in parallel\n",
    "    n_jobs=Shared_options[\"n_jobs\"],\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 208
    },
    "id": "12sYM9BWtL0v",
    "outputId": "cb4562f9-4a19-44b3-caa6-5eecd25c8478"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.\n",
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    0.5s remaining:    0.0s\n",
      "[Parallel(n_jobs=1)]: Done   1 out of   1 | elapsed:    0.5s finished\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "  <div id=\"df-4c39c40d-c13c-4077-b6eb-5060c8ef512a\">\n",
       "    <div class=\"colab-df-container\">\n",
       "      <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>epoch</th>\n",
       "      <th>dev_DTO</th>\n",
       "      <th>test_DTO</th>\n",
       "      <th>dev_performance</th>\n",
       "      <th>dev_fairness</th>\n",
       "      <th>test_performance</th>\n",
       "      <th>test_fairness</th>\n",
       "      <th>opt_dir</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BT</th>\n",
       "      <th>BTObj</th>\n",
       "      <th>adv_debiasing</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Downsampling</th>\n",
       "      <th>EO</th>\n",
       "      <th>True</th>\n",
       "      <td>1</td>\n",
       "      <td>0.005648</td>\n",
       "      <td>0.015392</td>\n",
       "      <td>0.749375</td>\n",
       "      <td>0.908632</td>\n",
       "      <td>0.751688</td>\n",
       "      <td>0.903068</td>\n",
       "      <td>results/dev/Moji/BT_Adv/opt.yaml</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>\n",
       "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-4c39c40d-c13c-4077-b6eb-5060c8ef512a')\"\n",
       "              title=\"Convert this dataframe to an interactive table.\"\n",
       "              style=\"display:none;\">\n",
       "        \n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
       "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
       "  </svg>\n",
       "      </button>\n",
       "      \n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      flex-wrap:wrap;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "      <script>\n",
       "        const buttonEl =\n",
       "          document.querySelector('#df-4c39c40d-c13c-4077-b6eb-5060c8ef512a button.colab-df-convert');\n",
       "        buttonEl.style.display =\n",
       "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "        async function convertToInteractive(key) {\n",
       "          const element = document.querySelector('#df-4c39c40d-c13c-4077-b6eb-5060c8ef512a');\n",
       "          const dataTable =\n",
       "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                     [key], {});\n",
       "          if (!dataTable) return;\n",
       "\n",
       "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "            + ' to learn more about interactive tables.';\n",
       "          element.innerHTML = '';\n",
       "          dataTable['output_type'] = 'display_data';\n",
       "          await google.colab.output.renderOutput(dataTable, element);\n",
       "          const docLink = document.createElement('div');\n",
       "          docLink.innerHTML = docLinkHtml;\n",
       "          element.appendChild(docLink);\n",
       "        }\n",
       "      </script>\n",
       "    </div>\n",
       "  </div>\n",
       "  "
      ],
      "text/plain": [
       "                                  epoch   dev_DTO  test_DTO  dev_performance  \\\n",
       "BT           BTObj adv_debiasing                                               \n",
       "Downsampling EO    True               1  0.005648  0.015392         0.749375   \n",
       "\n",
       "                                  dev_fairness  test_performance  \\\n",
       "BT           BTObj adv_debiasing                                   \n",
       "Downsampling EO    True               0.908632          0.751688   \n",
       "\n",
       "                                  test_fairness  \\\n",
       "BT           BTObj adv_debiasing                  \n",
       "Downsampling EO    True                0.903068   \n",
       "\n",
       "                                                           opt_dir  \n",
       "BT           BTObj adv_debiasing                                    \n",
       "Downsampling EO    True           results/dev/Moji/BT_Adv/opt.yaml  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "analysis.model_selection(\n",
    "    model_id= (\"BT_Adv\"),\n",
    "    index_column_names = [\"BT\", \"BTObj\", \"adv_debiasing\"],\n",
    "    save_path = r\"results/BT_ADV_df.pkl\",\n",
    "    # Follwoing options are predefined\n",
    "    results_dir= Shared_options[\"results_dir\"],\n",
    "    project_dir= Shared_options[\"project_dir\"]+\"/\"+Shared_options[\"dataset\"],\n",
    "    GAP_metric_name = Shared_options[\"GAP_metric_name\"],\n",
    "    Performance_metric_name = Shared_options[\"Performance_metric_name\"],\n",
    "    selection_criterion = Shared_options[\"selection_criterion\"],\n",
    "    checkpoint_dir= Shared_options[\"checkpoint_dir\"],\n",
    "    checkpoint_name= Shared_options[\"checkpoint_name\"],\n",
    "    n_jobs=Shared_options[\"n_jobs\"],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZV-5OmfctX7b"
   },
   "source": [
    "We have preprocessed the results with the `model_selection` function, and the resulting dfs can be downloaded as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7Fh7VqwwtV31",
    "outputId": "e8f87948-8249-4bef-fe5b-2369d2a01720"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2022-07-21 06:55:48--  https://docs.google.com/uc?export=download&id=1M0G6PyPuDC8Y_2nL9XKYCt10IUzbSvfl\n",
      "Resolving docs.google.com (docs.google.com)... 108.177.97.138, 108.177.97.102, 108.177.97.100, ...\n",
      "Connecting to docs.google.com (docs.google.com)|108.177.97.138|:443... connected.\n",
      "HTTP request sent, awaiting response... 303 See Other\n",
      "Location: https://doc-0g-0k-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/d9ah1be1dhjtrm0rinvfdje85fkvmrdh/1658386500000/17527887236587461918/*/1M0G6PyPuDC8Y_2nL9XKYCt10IUzbSvfl?e=download&uuid=2bc658ea-acf2-4d5e-8ae5-920657110366 [following]\n",
      "Warning: wildcards not supported in HTTP.\n",
      "--2022-07-21 06:55:51--  https://doc-0g-0k-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/d9ah1be1dhjtrm0rinvfdje85fkvmrdh/1658386500000/17527887236587461918/*/1M0G6PyPuDC8Y_2nL9XKYCt10IUzbSvfl?e=download&uuid=2bc658ea-acf2-4d5e-8ae5-920657110366\n",
      "Resolving doc-0g-0k-docs.googleusercontent.com (doc-0g-0k-docs.googleusercontent.com)... 74.125.204.132, 2404:6800:4008:c04::84\n",
      "Connecting to doc-0g-0k-docs.googleusercontent.com (doc-0g-0k-docs.googleusercontent.com)|74.125.204.132|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 790461 (772K) [application/x-gzip]\n",
      "Saving to: ‘retrived_results.tar.gz’\n",
      "\n",
      "retrived_results.ta 100%[===================>] 771.93K  --.-KB/s    in 0.006s  \n",
      "\n",
      "2022-07-21 06:55:51 (129 MB/s) - ‘retrived_results.tar.gz’ saved [790461/790461]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "!wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=1M0G6PyPuDC8Y_2nL9XKYCt10IUzbSvfl' -O retrived_results.tar.gz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "id": "GuyvpVFHtdaK"
   },
   "outputs": [],
   "source": [
    "!tar -xf retrived_results.tar.gz"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2USKrUhvtj1f"
   },
   "source": [
    "### Model Selection\n",
    "\n",
    "Here we demonstrate the application of `final_results_df`, which loads cached results with `retrive_results` for all methods, select the best hyperparameter combinations for each technique, and present the result in a DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "id": "_TqSF5Axtnpe"
   },
   "outputs": [],
   "source": [
    "Moji_results = analysis.retrive_results(\"Moji\", log_dir=\"analysis/results\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "IPCPFhLvtniq",
    "outputId": "087bf2ef-07a3-4f90-efee-ab082cc07910"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "  <div id=\"df-2a5c685c-02c6-40b9-8b06-374cb782d5d9\">\n",
       "    <div class=\"colab-df-container\">\n",
       "      <div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Models</th>\n",
       "      <th>test_performance mean</th>\n",
       "      <th>test_performance std</th>\n",
       "      <th>test_fairness mean</th>\n",
       "      <th>test_fairness std</th>\n",
       "      <th>dev_performance mean</th>\n",
       "      <th>dev_performance std</th>\n",
       "      <th>dev_fairness mean</th>\n",
       "      <th>dev_fairness std</th>\n",
       "      <th>DTO</th>\n",
       "      <th>epoch list</th>\n",
       "      <th>opt_dir list</th>\n",
       "      <th>is_pareto</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>GDEO</td>\n",
       "      <td>0.752763</td>\n",
       "      <td>0.004999</td>\n",
       "      <td>0.892255</td>\n",
       "      <td>0.007860</td>\n",
       "      <td>0.749350</td>\n",
       "      <td>0.003494</td>\n",
       "      <td>0.912672</td>\n",
       "      <td>0.002766</td>\n",
       "      <td>0.269694</td>\n",
       "      <td>[2, 12, 5, 9, 10]</td>\n",
       "      <td>[G:\\Experimental_results\\GroupDifference\\Moji\\...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>BTFairBatch</td>\n",
       "      <td>0.746837</td>\n",
       "      <td>0.003407</td>\n",
       "      <td>0.899351</td>\n",
       "      <td>0.004936</td>\n",
       "      <td>0.743975</td>\n",
       "      <td>0.004236</td>\n",
       "      <td>0.919254</td>\n",
       "      <td>0.004731</td>\n",
       "      <td>0.272437</td>\n",
       "      <td>[8, 6, 9, 5, 7]</td>\n",
       "      <td>[G:\\Experimental_results\\FairBatch\\Moji\\BTInit...</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Vanilla</td>\n",
       "      <td>0.722981</td>\n",
       "      <td>0.004576</td>\n",
       "      <td>0.611870</td>\n",
       "      <td>0.014356</td>\n",
       "      <td>0.726650</td>\n",
       "      <td>0.003673</td>\n",
       "      <td>0.632302</td>\n",
       "      <td>0.013370</td>\n",
       "      <td>0.476849</td>\n",
       "      <td>[2, 11, 2, 5, 2]</td>\n",
       "      <td>[G:\\Experimental_results\\vanilla\\Moji\\0\\opt.ya...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>BTEO</td>\n",
       "      <td>0.753927</td>\n",
       "      <td>0.001433</td>\n",
       "      <td>0.877469</td>\n",
       "      <td>0.003756</td>\n",
       "      <td>0.746325</td>\n",
       "      <td>0.000998</td>\n",
       "      <td>0.896874</td>\n",
       "      <td>0.005401</td>\n",
       "      <td>0.274892</td>\n",
       "      <td>[8, 6, 9, 4, 5]</td>\n",
       "      <td>[G:\\Experimental_results\\GatedBT\\Moji\\GatedBT_...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>GatedDAdv</td>\n",
       "      <td>0.750163</td>\n",
       "      <td>0.006945</td>\n",
       "      <td>0.908679</td>\n",
       "      <td>0.021678</td>\n",
       "      <td>0.745600</td>\n",
       "      <td>0.004828</td>\n",
       "      <td>0.928670</td>\n",
       "      <td>0.022488</td>\n",
       "      <td>0.266004</td>\n",
       "      <td>[24, 13, 19, 4, 3]</td>\n",
       "      <td>[G:\\Experimental_results\\hypertune3\\Moji\\hyper...</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>FairBatch</td>\n",
       "      <td>0.751488</td>\n",
       "      <td>0.005772</td>\n",
       "      <td>0.904373</td>\n",
       "      <td>0.008213</td>\n",
       "      <td>0.746050</td>\n",
       "      <td>0.003896</td>\n",
       "      <td>0.914526</td>\n",
       "      <td>0.006020</td>\n",
       "      <td>0.266276</td>\n",
       "      <td>[9, 9, 6, 6, 5]</td>\n",
       "      <td>[G:\\Experimental_results\\FairBatch\\Moji\\FairBa...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>GatedAdv</td>\n",
       "      <td>0.753113</td>\n",
       "      <td>0.005196</td>\n",
       "      <td>0.890065</td>\n",
       "      <td>0.013302</td>\n",
       "      <td>0.748975</td>\n",
       "      <td>0.003805</td>\n",
       "      <td>0.910838</td>\n",
       "      <td>0.010314</td>\n",
       "      <td>0.270257</td>\n",
       "      <td>[11, 4, 4, 13, 12]</td>\n",
       "      <td>[G:\\Experimental_results\\hypertune2\\Moji\\hyper...</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>DelayedCLS_Adv</td>\n",
       "      <td>0.761015</td>\n",
       "      <td>0.003081</td>\n",
       "      <td>0.882425</td>\n",
       "      <td>0.015918</td>\n",
       "      <td>0.751675</td>\n",
       "      <td>0.003481</td>\n",
       "      <td>0.899346</td>\n",
       "      <td>0.011417</td>\n",
       "      <td>0.266341</td>\n",
       "      <td>[13, 1, 3, 13, 1]</td>\n",
       "      <td>[/data/cephfs/punim1421/Fair_NLP_Classificatio...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>GDMean</td>\n",
       "      <td>0.752163</td>\n",
       "      <td>0.002130</td>\n",
       "      <td>0.901389</td>\n",
       "      <td>0.003916</td>\n",
       "      <td>0.749050</td>\n",
       "      <td>0.001368</td>\n",
       "      <td>0.922430</td>\n",
       "      <td>0.005829</td>\n",
       "      <td>0.266735</td>\n",
       "      <td>[11, 12, 7, 2, 2]</td>\n",
       "      <td>[G:\\Experimental_results\\GroupDifference\\Moji\\...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>GatedBTEO</td>\n",
       "      <td>0.762106</td>\n",
       "      <td>0.002592</td>\n",
       "      <td>0.900764</td>\n",
       "      <td>0.014701</td>\n",
       "      <td>0.759775</td>\n",
       "      <td>0.003798</td>\n",
       "      <td>0.909445</td>\n",
       "      <td>0.006631</td>\n",
       "      <td>0.257762</td>\n",
       "      <td>[3, 1, 3, 1, 11]</td>\n",
       "      <td>[G:\\Experimental_results\\GatedBT\\Moji\\GatedBT_...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>BTGatedAdv</td>\n",
       "      <td>0.735459</td>\n",
       "      <td>0.028830</td>\n",
       "      <td>0.866150</td>\n",
       "      <td>0.028232</td>\n",
       "      <td>0.730150</td>\n",
       "      <td>0.024594</td>\n",
       "      <td>0.886862</td>\n",
       "      <td>0.030537</td>\n",
       "      <td>0.296476</td>\n",
       "      <td>[5, 19, 19, 6, 1]</td>\n",
       "      <td>[G:\\Experimental_results\\hypertune2\\Moji\\hyper...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>Adv</td>\n",
       "      <td>0.756414</td>\n",
       "      <td>0.007271</td>\n",
       "      <td>0.893286</td>\n",
       "      <td>0.005623</td>\n",
       "      <td>0.747425</td>\n",
       "      <td>0.004549</td>\n",
       "      <td>0.912125</td>\n",
       "      <td>0.008507</td>\n",
       "      <td>0.265936</td>\n",
       "      <td>[9, 14, 18, 5, 16]</td>\n",
       "      <td>[G:\\Experimental_results\\hypertune\\Moji\\hypert...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>OldFairBatch</td>\n",
       "      <td>0.750638</td>\n",
       "      <td>0.006012</td>\n",
       "      <td>0.905537</td>\n",
       "      <td>0.005046</td>\n",
       "      <td>0.744525</td>\n",
       "      <td>0.004995</td>\n",
       "      <td>0.917734</td>\n",
       "      <td>0.004761</td>\n",
       "      <td>0.266655</td>\n",
       "      <td>[5, 7, 8, 13, 7]</td>\n",
       "      <td>[G:\\Experimental_results\\Original_FairBatch\\Mo...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>FairSCL</td>\n",
       "      <td>0.757314</td>\n",
       "      <td>0.003441</td>\n",
       "      <td>0.878219</td>\n",
       "      <td>0.004314</td>\n",
       "      <td>0.752825</td>\n",
       "      <td>0.001872</td>\n",
       "      <td>0.898325</td>\n",
       "      <td>0.002579</td>\n",
       "      <td>0.271527</td>\n",
       "      <td>[12, 5, 13, 1, 1]</td>\n",
       "      <td>[G:\\Experimental_results\\FairSCL\\Moji\\FSCL_0.3...</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>INLP</td>\n",
       "      <td>0.733433</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.855982</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.727625</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.859686</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.302983</td>\n",
       "      <td>[103]</td>\n",
       "      <td>[G:\\Experimental_results\\INLP\\Moji\\INLP_True_b...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>DAdv</td>\n",
       "      <td>0.755464</td>\n",
       "      <td>0.004076</td>\n",
       "      <td>0.904023</td>\n",
       "      <td>0.011218</td>\n",
       "      <td>0.748550</td>\n",
       "      <td>0.002405</td>\n",
       "      <td>0.915601</td>\n",
       "      <td>0.005007</td>\n",
       "      <td>0.262697</td>\n",
       "      <td>[6, 1, 7, 3, 5]</td>\n",
       "      <td>[G:\\Experimental_results\\hypertune\\Moji\\hypert...</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>\n",
       "      <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-2a5c685c-02c6-40b9-8b06-374cb782d5d9')\"\n",
       "              title=\"Convert this dataframe to an interactive table.\"\n",
       "              style=\"display:none;\">\n",
       "        \n",
       "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
       "       width=\"24px\">\n",
       "    <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
       "    <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
       "  </svg>\n",
       "      </button>\n",
       "      \n",
       "  <style>\n",
       "    .colab-df-container {\n",
       "      display:flex;\n",
       "      flex-wrap:wrap;\n",
       "      gap: 12px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert {\n",
       "      background-color: #E8F0FE;\n",
       "      border: none;\n",
       "      border-radius: 50%;\n",
       "      cursor: pointer;\n",
       "      display: none;\n",
       "      fill: #1967D2;\n",
       "      height: 32px;\n",
       "      padding: 0 0 0 0;\n",
       "      width: 32px;\n",
       "    }\n",
       "\n",
       "    .colab-df-convert:hover {\n",
       "      background-color: #E2EBFA;\n",
       "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
       "      fill: #174EA6;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert {\n",
       "      background-color: #3B4455;\n",
       "      fill: #D2E3FC;\n",
       "    }\n",
       "\n",
       "    [theme=dark] .colab-df-convert:hover {\n",
       "      background-color: #434B5C;\n",
       "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
       "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
       "      fill: #FFFFFF;\n",
       "    }\n",
       "  </style>\n",
       "\n",
       "      <script>\n",
       "        const buttonEl =\n",
       "          document.querySelector('#df-2a5c685c-02c6-40b9-8b06-374cb782d5d9 button.colab-df-convert');\n",
       "        buttonEl.style.display =\n",
       "          google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
       "\n",
       "        async function convertToInteractive(key) {\n",
       "          const element = document.querySelector('#df-2a5c685c-02c6-40b9-8b06-374cb782d5d9');\n",
       "          const dataTable =\n",
       "            await google.colab.kernel.invokeFunction('convertToInteractive',\n",
       "                                                     [key], {});\n",
       "          if (!dataTable) return;\n",
       "\n",
       "          const docLinkHtml = 'Like what you see? Visit the ' +\n",
       "            '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
       "            + ' to learn more about interactive tables.';\n",
       "          element.innerHTML = '';\n",
       "          dataTable['output_type'] = 'display_data';\n",
       "          await google.colab.output.renderOutput(dataTable, element);\n",
       "          const docLink = document.createElement('div');\n",
       "          docLink.innerHTML = docLinkHtml;\n",
       "          element.appendChild(docLink);\n",
       "        }\n",
       "      </script>\n",
       "    </div>\n",
       "  </div>\n",
       "  "
      ],
      "text/plain": [
       "            Models  test_performance mean  test_performance std  \\\n",
       "0             GDEO               0.752763              0.004999   \n",
       "1      BTFairBatch               0.746837              0.003407   \n",
       "2          Vanilla               0.722981              0.004576   \n",
       "3             BTEO               0.753927              0.001433   \n",
       "4        GatedDAdv               0.750163              0.006945   \n",
       "5        FairBatch               0.751488              0.005772   \n",
       "6         GatedAdv               0.753113              0.005196   \n",
       "7   DelayedCLS_Adv               0.761015              0.003081   \n",
       "8           GDMean               0.752163              0.002130   \n",
       "9        GatedBTEO               0.762106              0.002592   \n",
       "10      BTGatedAdv               0.735459              0.028830   \n",
       "11             Adv               0.756414              0.007271   \n",
       "12    OldFairBatch               0.750638              0.006012   \n",
       "13         FairSCL               0.757314              0.003441   \n",
       "14            INLP               0.733433                   NaN   \n",
       "15            DAdv               0.755464              0.004076   \n",
       "\n",
       "    test_fairness mean  test_fairness std  dev_performance mean  \\\n",
       "0             0.892255           0.007860              0.749350   \n",
       "1             0.899351           0.004936              0.743975   \n",
       "2             0.611870           0.014356              0.726650   \n",
       "3             0.877469           0.003756              0.746325   \n",
       "4             0.908679           0.021678              0.745600   \n",
       "5             0.904373           0.008213              0.746050   \n",
       "6             0.890065           0.013302              0.748975   \n",
       "7             0.882425           0.015918              0.751675   \n",
       "8             0.901389           0.003916              0.749050   \n",
       "9             0.900764           0.014701              0.759775   \n",
       "10            0.866150           0.028232              0.730150   \n",
       "11            0.893286           0.005623              0.747425   \n",
       "12            0.905537           0.005046              0.744525   \n",
       "13            0.878219           0.004314              0.752825   \n",
       "14            0.855982                NaN              0.727625   \n",
       "15            0.904023           0.011218              0.748550   \n",
       "\n",
       "    dev_performance std  dev_fairness mean  dev_fairness std       DTO  \\\n",
       "0              0.003494           0.912672          0.002766  0.269694   \n",
       "1              0.004236           0.919254          0.004731  0.272437   \n",
       "2              0.003673           0.632302          0.013370  0.476849   \n",
       "3              0.000998           0.896874          0.005401  0.274892   \n",
       "4              0.004828           0.928670          0.022488  0.266004   \n",
       "5              0.003896           0.914526          0.006020  0.266276   \n",
       "6              0.003805           0.910838          0.010314  0.270257   \n",
       "7              0.003481           0.899346          0.011417  0.266341   \n",
       "8              0.001368           0.922430          0.005829  0.266735   \n",
       "9              0.003798           0.909445          0.006631  0.257762   \n",
       "10             0.024594           0.886862          0.030537  0.296476   \n",
       "11             0.004549           0.912125          0.008507  0.265936   \n",
       "12             0.004995           0.917734          0.004761  0.266655   \n",
       "13             0.001872           0.898325          0.002579  0.271527   \n",
       "14                  NaN           0.859686               NaN  0.302983   \n",
       "15             0.002405           0.915601          0.005007  0.262697   \n",
       "\n",
       "            epoch list                                       opt_dir list  \\\n",
       "0    [2, 12, 5, 9, 10]  [G:\\Experimental_results\\GroupDifference\\Moji\\...   \n",
       "1      [8, 6, 9, 5, 7]  [G:\\Experimental_results\\FairBatch\\Moji\\BTInit...   \n",
       "2     [2, 11, 2, 5, 2]  [G:\\Experimental_results\\vanilla\\Moji\\0\\opt.ya...   \n",
       "3      [8, 6, 9, 4, 5]  [G:\\Experimental_results\\GatedBT\\Moji\\GatedBT_...   \n",
       "4   [24, 13, 19, 4, 3]  [G:\\Experimental_results\\hypertune3\\Moji\\hyper...   \n",
       "5      [9, 9, 6, 6, 5]  [G:\\Experimental_results\\FairBatch\\Moji\\FairBa...   \n",
       "6   [11, 4, 4, 13, 12]  [G:\\Experimental_results\\hypertune2\\Moji\\hyper...   \n",
       "7    [13, 1, 3, 13, 1]  [/data/cephfs/punim1421/Fair_NLP_Classificatio...   \n",
       "8    [11, 12, 7, 2, 2]  [G:\\Experimental_results\\GroupDifference\\Moji\\...   \n",
       "9     [3, 1, 3, 1, 11]  [G:\\Experimental_results\\GatedBT\\Moji\\GatedBT_...   \n",
       "10   [5, 19, 19, 6, 1]  [G:\\Experimental_results\\hypertune2\\Moji\\hyper...   \n",
       "11  [9, 14, 18, 5, 16]  [G:\\Experimental_results\\hypertune\\Moji\\hypert...   \n",
       "12    [5, 7, 8, 13, 7]  [G:\\Experimental_results\\Original_FairBatch\\Mo...   \n",
       "13   [12, 5, 13, 1, 1]  [G:\\Experimental_results\\FairSCL\\Moji\\FSCL_0.3...   \n",
       "14               [103]  [G:\\Experimental_results\\INLP\\Moji\\INLP_True_b...   \n",
       "15     [6, 1, 7, 3, 5]  [G:\\Experimental_results\\hypertune\\Moji\\hypert...   \n",
       "\n",
       "    is_pareto  \n",
       "0        True  \n",
       "1       False  \n",
       "2        True  \n",
       "3        True  \n",
       "4       False  \n",
       "5        True  \n",
       "6       False  \n",
       "7        True  \n",
       "8        True  \n",
       "9        True  \n",
       "10       True  \n",
       "11       True  \n",
       "12       True  \n",
       "13      False  \n",
       "14       True  \n",
       "15       True  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Moji_main_results = analysis.final_results_df(\n",
    "    results_dict = Moji_results,\n",
    "    pareto = False,\n",
    "    pareto_selection = \"test\",\n",
    "    selection_criterion = \"DTO\",\n",
    "    return_dev = True,\n",
    "    return_conf=True,\n",
    "    )\n",
    "Moji_main_results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "hkQQXihpZhBu"
   },
   "source": [
    "### Create $\\LaTeX{}$ tabels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "fWTaYlaPuAqt",
    "outputId": "47fcdca3-72d9-4726-d465-7d8d7715039a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\\begin{tabular}{lrrrrrrrrrlll}\n",
      "\\toprule\n",
      "        Models &  test\\_performance mean &  test\\_performance std &  test\\_fairness mean &  test\\_fairness std &  dev\\_performance mean &  dev\\_performance std &  dev\\_fairness mean &  dev\\_fairness std &      DTO &         epoch list &                                       opt\\_dir list &  is\\_pareto \\\\\n",
      "\\midrule\n",
      "          GDEO &               0.752763 &              0.004999 &            0.892255 &           0.007860 &              0.749350 &             0.003494 &           0.912672 &          0.002766 & 0.269694 &  [2, 12, 5, 9, 10] & [G:\\textbackslash Experimental\\_results\\textbackslash GroupDifference\\textbackslash Moji\\textbackslash G... &       True \\\\\n",
      "   BTFairBatch &               0.746837 &              0.003407 &            0.899351 &           0.004936 &              0.743975 &             0.004236 &           0.919254 &          0.004731 & 0.272437 &    [8, 6, 9, 5, 7] & [G:\\textbackslash Experimental\\_results\\textbackslash FairBatch\\textbackslash Moji\\textbackslash BTInitF... &      False \\\\\n",
      "       Vanilla &               0.722981 &              0.004576 &            0.611870 &           0.014356 &              0.726650 &             0.003673 &           0.632302 &          0.013370 & 0.476849 &   [2, 11, 2, 5, 2] & [G:\\textbackslash Experimental\\_results\\textbackslash vanilla\\textbackslash Moji\\textbackslash 0\\textbackslash opt.yam... &       True \\\\\n",
      "          BTEO &               0.753927 &              0.001433 &            0.877469 &           0.003756 &              0.746325 &             0.000998 &           0.896874 &          0.005401 & 0.274892 &    [8, 6, 9, 4, 5] & [G:\\textbackslash Experimental\\_results\\textbackslash GatedBT\\textbackslash Moji\\textbackslash GatedBT\\_R... &       True \\\\\n",
      "     GatedDAdv &               0.750163 &              0.006945 &            0.908679 &           0.021678 &              0.745600 &             0.004828 &           0.928670 &          0.022488 & 0.266004 & [24, 13, 19, 4, 3] & [G:\\textbackslash Experimental\\_results\\textbackslash hypertune3\\textbackslash Moji\\textbackslash hypert... &      False \\\\\n",
      "     FairBatch &               0.751488 &              0.005772 &            0.904373 &           0.008213 &              0.746050 &             0.003896 &           0.914526 &          0.006020 & 0.266276 &    [9, 9, 6, 6, 5] & [G:\\textbackslash Experimental\\_results\\textbackslash FairBatch\\textbackslash Moji\\textbackslash FairBat... &       True \\\\\n",
      "      GatedAdv &               0.753113 &              0.005196 &            0.890065 &           0.013302 &              0.748975 &             0.003805 &           0.910838 &          0.010314 & 0.270257 & [11, 4, 4, 13, 12] & [G:\\textbackslash Experimental\\_results\\textbackslash hypertune2\\textbackslash Moji\\textbackslash hypert... &      False \\\\\n",
      "DelayedCLS\\_Adv &               0.761015 &              0.003081 &            0.882425 &           0.015918 &              0.751675 &             0.003481 &           0.899346 &          0.011417 & 0.266341 &  [13, 1, 3, 13, 1] & [/data/cephfs/punim1421/Fair\\_NLP\\_Classification... &       True \\\\\n",
      "        GDMean &               0.752163 &              0.002130 &            0.901389 &           0.003916 &              0.749050 &             0.001368 &           0.922430 &          0.005829 & 0.266735 &  [11, 12, 7, 2, 2] & [G:\\textbackslash Experimental\\_results\\textbackslash GroupDifference\\textbackslash Moji\\textbackslash G... &       True \\\\\n",
      "     GatedBTEO &               0.762106 &              0.002592 &            0.900764 &           0.014701 &              0.759775 &             0.003798 &           0.909445 &          0.006631 & 0.257762 &   [3, 1, 3, 1, 11] & [G:\\textbackslash Experimental\\_results\\textbackslash GatedBT\\textbackslash Moji\\textbackslash GatedBT\\_R... &       True \\\\\n",
      "    BTGatedAdv &               0.735459 &              0.028830 &            0.866150 &           0.028232 &              0.730150 &             0.024594 &           0.886862 &          0.030537 & 0.296476 &  [5, 19, 19, 6, 1] & [G:\\textbackslash Experimental\\_results\\textbackslash hypertune2\\textbackslash Moji\\textbackslash hypert... &       True \\\\\n",
      "           Adv &               0.756414 &              0.007271 &            0.893286 &           0.005623 &              0.747425 &             0.004549 &           0.912125 &          0.008507 & 0.265936 & [9, 14, 18, 5, 16] & [G:\\textbackslash Experimental\\_results\\textbackslash hypertune\\textbackslash Moji\\textbackslash hypertu... &       True \\\\\n",
      "  OldFairBatch &               0.750638 &              0.006012 &            0.905537 &           0.005046 &              0.744525 &             0.004995 &           0.917734 &          0.004761 & 0.266655 &   [5, 7, 8, 13, 7] & [G:\\textbackslash Experimental\\_results\\textbackslash Original\\_FairBatch\\textbackslash Moj... &       True \\\\\n",
      "       FairSCL &               0.757314 &              0.003441 &            0.878219 &           0.004314 &              0.752825 &             0.001872 &           0.898325 &          0.002579 & 0.271527 &  [12, 5, 13, 1, 1] & [G:\\textbackslash Experimental\\_results\\textbackslash FairSCL\\textbackslash Moji\\textbackslash FSCL\\_0.31... &      False \\\\\n",
      "          INLP &               0.733433 &                   NaN &            0.855982 &                NaN &              0.727625 &                  NaN &           0.859686 &               NaN & 0.302983 &              [103] & [G:\\textbackslash Experimental\\_results\\textbackslash INLP\\textbackslash Moji\\textbackslash INLP\\_True\\_ba... &       True \\\\\n",
      "          DAdv &               0.755464 &              0.004076 &            0.904023 &           0.011218 &              0.748550 &             0.002405 &           0.915601 &          0.005007 & 0.262697 &    [6, 1, 7, 3, 5] & [G:\\textbackslash Experimental\\_results\\textbackslash hypertune\\textbackslash Moji\\textbackslash hypertu... &       True \\\\\n",
      "\\bottomrule\n",
      "\\end{tabular}\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(Moji_main_results.to_latex(index=False))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "id": "s6CqKFl7uHZX"
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kAbrpa3sZstn"
   },
   "source": [
    "### Create plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "id": "iA_CqU9Iug4u"
   },
   "outputs": [],
   "source": [
    "Moji_plot_df = analysis.final_results_df(\n",
    "    results_dict = Moji_results,\n",
    "    pareto = True, pareto_selection = \"test\", \n",
    "    selection_criterion = None, return_dev = True,\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 533
    },
    "id": "Th55IhiHugvs",
    "outputId": "9d77ddc5-03d0-4028-a821-c59a08f8f626"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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1xMnTqRjx4588sknpconT57MxIkTeeyxx0hMTOSLL76gqKjIl008sx2ABx54gP9v787jo6ru/4+/PjOTjRD2JexEA4gIKCigVUBcQHbrgoi1KGrVKtVWbdH6k7qAUmvdALuA6Le4C2i1gmLrhiwubLUgyCayg5AAIcvMnN8fMxkSSEISJpmQvJ+Px33ovffcc8+9GW7mk8855/7+97/nq6++4o033uC5554r9rpFRIpTMFhcvny5gkURkSrOd04KAAkHc2FZxbwCI8ufTUZuFvFkE/jwG1pme7h9bWMasYfP2ocmbqxfJ42+vR7AOVdo/o+KpO6mNUxOTg7bt29n+/btrFq1ittvv50DBw4wZMiQUh0/YcIEWrRoQY8ePZg+fTorVqxg3bp1zJ49m4ULF+L1hoLa1q1bEx8fzzPPPMP69et5++23eeihhwrV1aZNG8yMd955h127dnHgwAFSUlK46667uPPOO3nhhRdYt24dX3/9Nc8880zkFRY333wza9eu5e677+bbb7/lpZdeYsaMGZF68/Ly+L//+z9GjhzJaaedVmi54YYbWLx4Md988w1XX301ZsaNN97I//73P/71r3/x+OOPH3XNbdu25ZxzzmHMmDEEAgGGDh1azrsvIhIKFrt168btt9/O0KFD2bp1q7qhiohUQYEVWeS9n0HyjlBCIy9Y/KSS5fXO5kUMnj+OR7fNJbj8WxICRs/dibQ52JlGDTpyVpdbGdT/H/gtXmMSpeLMnTuXZs2a0axZM3r27MkXX3zB66+/Tt++fUt1fMOGDVmyZAnXXnstf/zjH+nRowedO3dm/PjxjBgxgr/97W9AqGvqjBkzeP311zn11FN59NFHjwrAWrRowR/+8Ad+97vf0bRpU2677TYAHnroIe6//34mTpxIx44dGTBgAO+++y5paWlAKAB98803mTNnDl27duW5555jwoQJkXrffvtt9uzZw6WXXnpU+zt27EjHjh2ZNm0atWvX5p///CcrV67kjDPO4L777jtq8pt8o0aNYvny5Vx66aWRWVhFRI6HgkURkarN/+l+8l7ZQ/z6w0Olov2uRAsPM3PhDOFBn2NffJDc2kn07jOVQ437sWT3D5FylcVi9e6NqszM6gAZGRkZ1KlTp9C+7OxsNmzYQFpaWqEJT0RiTZ9NkRNbIBCIdEPdt2+fuqFKlZCZmUnd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RiSRscfx7guHSEiCy29NLnSOUb9JLlPb1q5di3OOjh07Frm/Y8eO7N2796hfvPPnz2f16tXMmzeP5s2bAzBhwgQuueSSo+oYOXIkXq83sv6Pf/yD4cOHc9ddd0W23X777cybN4/XXnuNHj16FNvefv368Zvf/KbYc/j9fnJychg8eDDjxo2L7O/atStdu3aNrD/00EPMnj2bt99+m9tuu40GDRrg9XpJSUkhNTU1Um7SpEmceeaZTJkyJbKtU6dOhc7dpUsXHnjgAQDatWvHs88+y4cffshFF11U7HWIiMjxKdgNdenSpXz66afqhioilSbrjk2QEyRxQis89Y8/dPIYPNCrTaHZTc9vlcIbGz8iwV9gwppgEAp8r65sChJrmLL+VWLVqlW0atUqEiACnH322UWW/fOf/8yFF14YWW/WrBmBQIAJEybw2muvsWXLFnJzc8nJyaFWrVolnvfMM88s8RyBQIDvvvuOX//61/zsZz/jlVdeAUKZxPHjx/Puu++ybds2/H4/hw4dimQSi7Ns2TKuuOKKEst06dKl0HqzZs3YuXNniceIiEh0eL1ezjzzTM444wwFiyJSebKDkOtCYxKjIM7joWODJNrXT4xsW7zzf0xf+y43nDT8cME8v4LE6mLE2JIDH0/459y9bzzd+hx7Upe6De2oOo91juKkp6djZqxatYpLL730qP2rVq2ifv36x/VLNjU1lfT09ELbHn30UZ566imefPJJOnfuTHJyMnfccQe5ubkl1pWcXHSmtOA5OnTowP79+xk5ciQPP/ww6enp3HXXXXzwwQc8/vjjpKenk5SUxOWXX37M8x3ZBbcocXGFuwaYGcFg8JjHiYhI9ChYFJHKlPhAC/AaVi96YVO8t/CIv7c2f8JBfzaBgvPi+Ms5nWqUaExiFPnirMTFE57O1usruZwvLlTOrPB6wXOUVcOGDbnooouYMmUKhw4dKrRv+/btzJw5kxEjRhSayAVC3VA3b94cGbsHsGjRolKfd8GCBQwbNoxrrrmGrl27ctJJJ7FmzZoyt784+d1b869pwYIFjB49mksvvZTOnTuTmprKxo0bCx0THx9faKwhhLKEH374YdTaJSIiFSs/WBw7diyDBg2KjFl88803NWZRRKLG0yweT5M47DhmNj2WOE8oAPV5g9y1bh9j12UoSJTK8+yzz5KTk0P//v355JNP2Lx5M3PnzuWiiy6iRYsWPPLII0cdc+GFF9K+fXt+/vOfs3z5cj799NNiZ0EtSrt27fjggw/4/PPPWbVqFb/4xS/YsWNHua9h3759bN++na1bt/Lxxx/z4IMP0r59+8hYy3bt2jFr1iyWLVvG8uXLufrqq4/K9rVt25ZPPvmELVu2sHv3bgDGjRvHF198wa233sqKFStYvXo1U6dOjewXEZGqKT9YvP322xk0aBDff/+9gkURiZqcZ7aT/fAWgttK7pV2POLDQaJZkCE/5jFwZxYur/j5SyqDgsQapF27dnz55ZecdNJJXHnllZx88sncdNNNnH/++SxcuLDI9xV6PB5mz57NoUOH6NGjBzfccEORwWRxfv/739OtWzf69+9P3759SU1NZfjw4cc+sBjXXXcdzZo1o2XLlowcOZJOnTrx3nvv4fOF/nE98cQT1K9fn3POOYchQ4bQv39/unXrVqiOBx98kI0bN3LyySdHuiW1b9+e999/n+XLl9OjRw/OPvts3nrrrUi9IiJStfl8PgWLIhJ1we9zCa7PwWVX3BCjMxq2Y3Crs2ma2Ji/tarN861TwB/bINFiPb1qVWRmdYCMjIwM6tSpU2hfdnY2GzZsIC0tjcTExKIrEIkBfTZFRA7z+/0sW7aMTz/9lMzMTE477TR69+6tMYtllJmZSd26dQHqOucyK+OcJX0PE6lsgZVZOL/D2z4RS67YiWQ27t/LiA/+RWIgyH96XYSnVeqxDyqDsvx7VppEREREqp38zOLpp58eCRanTJmiYFFEysTbuXyTRpbFxgPb8eAhwZvIZSmNiFu1IeaZRHU3FRERkWpL3VBF5Hjk/XMvOdN3Efyh4sYkzt/yFQ0SUrj3q6nc0acvt+xzuLzYTlyjTKKIiIhUe8osikh5BL4+SHBTLr7uydDy2K+wK49zm3bmvR8Ws+LHjUxa8W9O/8kpXKJMooiIiEjlUGZRRMok/OoLF6i4eVxOSmnG82vnAnH88/sfeWz/dvBW7PjHY1EmUURERGocZRZFpFS84fcjVlCQmBvI490fFrEjey8QR9D20qp2cwInNceTm4fFx1XIeY9FmUQRERGpsZRZFJES5QeJ/orLJP7t23dD/2N5BL0r2RdcAi6I//OlMXtfooJEERERqfFKChZ3794d6+aJSKzk97usgHlkcgN5zN3yBXtyMvCZBx9efKSwJ9vPvC1f4I/34v9wES43L/onPwZ1NxUREREJK6ob6uTJkznttNPo06cPjRo1inUTRaQSWQV2Nw24IENbn8PQ1ucAsCPrIEPnziHe42FI2nkc9P1A4Lk38V14dtTPfSwKEkVERESOoGBRRIBId1NXAd1Nk3wJoboPHCRn/FRy4j1wZlPwB8i+63G8zoFzkJ0DtSv+fY0FqbupHNOMGTOoV69erJshIiJS6Yrqhjp58mR1QxWpITyt4/F0SsIaVGBuLTEREuIgGApEHUAwGAoQkxIgMaHizl0MBYk1yOjRozGzo5bvvvuuxONGjBjBmjVrjln/rl27uOWWW2jdujUJCQmkpqbSv39/FixYUKjc0qVLueKKK2jatCmJiYm0a9eOG2+8MXKOjRs3YmYsW7as/BcrIiISRQoWRWqmuCH1SfxNM3xnJFfcSYJBvOd1JxweFuI9r3soYKxkMQ8SzeyXZrbRzLLNbLGZ9ThG+XpmNtnMtplZjpmtMbOBBfaPNzN3xLK64q/kxDBgwAC2bdtWaElLSyvxmKSkJJo0aVLs/tzcXAAuu+wyli5dygsvvMCaNWt4++236du3L3v27ImUfeedd+jVqxc5OTnMnDmTVatW8Y9//IO6dety//33R+ciRUREKsiRweKmTZsULIpUY8G9foKbcgjurbhZRi0+Dt8FvfD2PvPwxqQEvBefg++CXjF5DUZMxySa2QjgCeBmYDFwBzDPzDo453YWUT4e+ADYCVwObAHaAPuOKPoNcGGB9UqZOzaYU3RfZYsD8xgu6HDFTE4UKRNwuGJa60k4/DLPyCDaMsrP8BX0xBNP8Pzzz7N+/XoaNGjAkCFDmDRpErVr1wZC3U3vuOMO9u0L3ebx48czZ84cbrvtNh555BE2bdrEjz/+yKeffspHH31Enz59AGjTpg09ehyO+bOysrjuuusYOHAgs2fPjmxPS0ujZ8+ekfpFRESquoJjFpcuXaoxiyLVlP+dffj/k4lvaD3ihzeosPNYnA/fT86AD7fgvB4S/nAbBANYXGzCtVhPXPNr4G/OuecBzOxmYBBwPfBoEeWvBxoA5zgXCbc2FlHO75zbHv3mluzb+7KK3N765kSS073k7XGse+xQkWXS708irq5x4NsAP0zPOWq/xcEpE0Np7r0L/DToHb2/KHg8Hp5++mnS0tJYv349t956K/fccw9Tpkwp9pjvvvuON998k1mzZuH1eqlduza1a9dmzpw59OrVi4SEo/tOz5s3j927d3PPPfcUWafGPYqIyInG5/Nx1llnccYZZyhYFKmGvD+pjffc2liyF5cVAK9hCRXTGfNwxtAwnxfwVsh5SiNmQWI4K9gdmJi/zTkXNLP5QHHzvA4FFgKTzWwYsAt4CXjMOVfw7SXtzGwrkB0uP845930FXMYJ55133olkCAEuueQSXn/99ch627Ztefjhh7n55ptLDBJzc3N58cUXady4cWTbjBkzuPHGG3nuuefo1q0bffr04aqrrqJLly4ArF27FoBTTjkl2pclIiISUwoWRaofl+fAQd6svZFtcZfWx9MmAfOVr1ffsXjN8FrF1F0WscwkNiIUHu84YvsOoLgo4iSgHzATGAikA1OAOOAP4TKLgdHAt0Az4AHgUzM7zTm3v6hKzSwBKJj6SinjtQDQ4ZGip6a18B8F4hraMcvU7uAttky++j8p/4/t/PPPZ+rUqZH15ORk5s+fz8SJE1m9ejWZmZn4/X6ys7PJysqiVq2i29KmTZtCASKExiQOGjSITz/9lEWLFvHee+8xadIk/v73vzN69Gici/7UwSIiIlVJccFi586d6d27t4JFkROEcw4OBcl5ejvsPzxxTM7mHJIeaoVL8WBRCuYO+f0k+Xw0SarF55deXez+yhTr7qZl5SE0HvGmcObwKzNrAdxNOEh0zr1XoPwKM1sMbAKuBKYVU+84QsHk8TUuoeQPinkMO8YMtuY17BiZ5fKOR4RQUJienh5Z37hxI4MHD+aWW27hkUceoUGDBnz22WeMGTOG3NzcYoPE5OSiZ3hKTEzkoosu4qKLLuL+++/nhhtu4IEHHmD06NG0b98egNWrV3P22ZX/UlAREZHKUlSwuHLlSgWLIieKIOQ8WThABGB/kJyntpNwb/Oo9Qb1mvHOpnVM+HrxUfvu7daTi1u2jc6JyiCWs5vuBgJA0yO2NwWKG0+4DVhzRNfSVUBquPvqUZxz+4A1hLKOxZkI1C2wtDxm66uJr776imAwyJ/+9Cd69epF+/bt2bp1a9TqP/XUUzl48CAAF198MY0aNWLSpElFltXENSIiUt3kB4tjx45l4MCBbNy4kcmTJzNr1izNhipSlfkdLlB0Lzjnd+CPXg+5eK+Xi1u2pWFiEgHnIkvDxCQubtmWeG/lj02MWSbROZdrZl8BFwBzAMzME15/tpjDFgBXm5nHOZcf1rcHtjnncos6wMxqAycD/1dCW3KAnALHlPFqTlzp6enk5eXxzDPPMGTIEBYsWMBzzz1X5nr27NnDFVdcwfXXX0+XLl1ISUnhyy+/ZNKkSQwbNgwIZR///ve/c8UVVzB06FDGjh1Leno6u3fv5rXXXuP777/nlVdeidT57bffHnWeTp06ERdX+dMAi4iIHA9lFkVOPN52CXguros1Pfzd0+3II7jh6Ekmo2HMKZ2ZuPRwNvGGjp0r5DylEevupk8AL5jZl8ASQq/ASAbyZzt9EdjinBsXLj8VuA14ysyeAdoB9wJP51doZo8D/yTUxbQ5oW6oAeDlyrigE03Xrl154okneOyxxxg3bhy9e/dm4sSJXHvttWWqp3bt2vTs2ZM///nPrFu3jry8PFq1asWNN97IvffeGyk3bNgwPv/8cyZOnMjVV19NZmYmrVq1ol+/fjz88MOF6rzqqquOOs/mzZtp2bLGJHpFRKSaUbAocmKwBA++i+vi9gTIm1Ng4ppB9fC1S4j6DKfxXi8DW6cxbfVKdh7KoklSLS5plRaTLCKAxXoyETO7jdCYwlRgGTDWObc4vO8jYKNzbnSB8mcDfwZOJ/SexGkUmN3UzF4BegMNCc1++hlwn3NuXRnaVAfIyMjIoE6dOoX2ZWdns2HDBtLS0khMTCzXNYtUBH02RUROPH6/PxIs7t+/v8oFi5mZmdStWxegrnMuszLOWdL3MJHK4pyD/QEO3f9D4XGJKR6SHmoJKd6o9z7MDQR47/sNTFi6mHu79Yx6kFiWf8+xziTinHuWYrqXOuf6FrFtIdCrhPqOTj+JiIiIVEHKLIpUUUHIeXJHMRPX7IjqxDX54r1eLmmdxj83rYtpFhGqQJAoIiIiUtMpWBSpYkozcc1xvHGgJE+f269C6i0LBYkiIiIiVYSCRZGqw3tyAv7NR8+N6U2vuGE98V4vLuBimkUEBYkiIiIiVY6CRZHYsgQP3m7J+D/ZDwV7nHrAe0atqE9cU1CCN/YhWuxbICIiIiJFUrAoEjuedokkPt6avDl7CSw5gLdnbeKG1ceSYvmq+cqhIFFERESkilOwKFL5LMETehXGeSnE/6wRZAWxlNh2A60sChJFREREThAKFkUqX+7fd0FOkPibm+BNSYp1cyqFgkQRERGRE4yCRZHKY7U8BHfk4Q4Gj124mlCQKCIiInKCUrAoUgmSw2MQsxQkioiIiMgJQsGiSMWxWqEgsSZlEqv/1DwSMXr0aIYPHx75fzPj0UcfLVRmzpw5mB1+MehHH32EmbFv374i6xw/fjxmhpnh8/lo27Ytd955JwcOHKi4CxEREZEi5QeLY8eO5ZJLLmHjxo1MnjyZWbNmsXv37lg3T+SEZMmhyWpcViDGLak8yiTWYImJiTz22GP84he/oH79+uWup1OnTsyfPx+/38+CBQu4/vrrycrK4i9/+UsUWysiIiKl5fP56NGjB926dePrr7/ms88+U2ZRpJw87RLx+h2e1gmxbkqlUSYxilxOsOQl4ELl8lxo3R9e94fX80IpbBd0kWMAnHNH1RUNF154IampqUycOPG46vH5fKSmptKyZUtGjBjBqFGjePvtt6PSRhERESm//GBRmUWR8vP1qk3CdY3xdUuOdVMqjTKJUXTolo0l7o+/pQm+s2qT98oe/P/JxDe0HvHDG+D/OJO8mXvwnplMwq1NCa7JJmfSNqx5HEkPt4L9QQ7dsalQXbWmn3Tc7fV6vUyYMIGrr76asWPH0rJly+OuEyApKYnc3Nyo1CUiIiLHr6TMYp8+fWjYsGGsmyhSZbkMP4ENOVi8B++pNeMVGMok1nCXXnopp59+Og888EBU6vvqq6946aWX6NevX1TqExERkegpKrP47LPPMnv2bPbs2RPr5olUSYHvcsh9egd5s3+MdVMqjTKJUZQ0tW3JBXyhCWHirmpI3JUNwBta9/Wpg+/clEjI7mmfWLiuFM+x6z4Ojz32GP369eOuu+4q1/ErV66kdu3aBAIBcnNzGTRoEM8++2yUWykiIiLRUlRmccWKFXTp0oXevXsrsyhSgNXz4klLwFrEx7oplUZBYhRZQukSsxZnwOEZRM1nkQASwDwGCQXWrfB6tPXu3Zv+/fszbtw4Ro8eXebjO3TowNtvv43P56N58+bEx9ecf0AiIiInsmMFi3FxcbFuokjMeU9OxHt/i1g3o1IpSBQAHn30UU4//XQ6dOhQ5mPj4+NJT0+vgFaJiIhIZSguWNTvd5HwpJJ7/JAVxFrHF3pdXHWlIFEA6Ny5M6NGjeLpp58ucv/KlStJSUmJrJsZXbt2razmiYiISCU4MlicP39+/q7BZjbPOaeBi1Lz5Diyf7sZCA8vq8AeflWFgkSJePDBB3n11VeL3Ne7d+9C616vF7/fXxnNEhERkUqWHyymp6dz3333AbQFbjOzFcAnChalRkk0SLTQ0LIcBzXgdYnmnIt1G6ocM6sDZGRkZFCnTp1C+7Kzs9mwYQNpaWkkJibGpoEiRdBnU0REoi0zM5O6desCNADaAecBtYEKCxZL+h4mIuVX4N9zXedcZklllUkUERERkWMJOOeWmNnXQDdCwWIXZRalJnH+UHLNfOpuKiIiIiICgHPODyhYlBone9JWgquzib+9Kb4zkmPdnAqnIFFEREREykTBotQ4+dnDrGBs21FJFCSKiIiISLkoWJSaIuGmJqH/8YDLCoDXSv2O9BORgkQREREROS4KFqU6c3mO4I488mbvjWyLu7Q+njYJ1XZ8ooJEEREREYkKBYtS3Tjn4FCQnKe3w/7DXU1zNueQ9FArXIoHs+oXKFbfHKmIiIiIxIRzzu+cWwI8BbwHnEToPYuXmlnD2LZOpAyCkPNk4QARgP1Bcp7aDtV0iKIyiSIiIiJSIZRZlBOe3+ECRb9X3vkd+B14lUkUKZaZMWfOnFg3Q0RERKqYIzKLc1FmUU4g3pMTit6enljJLak8ChJrkNGjR2NmmBlxcXE0bdqUiy66iOnTpxMMHp0r79+/P16vly+++CIGrRUREZHqJhwsLkbBopwgLMGDt1vy0VGTB7xn1Kq2M5xWz6uSYg0YMIBt27axceNG3nvvPc4//3x+9atfMXjwYPx+f6Tc999/z+eff85tt93G9OnTY9hiERERqW5KChaB+jFtnMgRPO0SSZzUGm/vFEg0vH1SSHy8NZ521TeTqDGJNUxCQgKpqakAtGjRgm7dutGrVy8uuOACZsyYwQ033ADA888/z+DBg7nlllvo1asXTzzxBElJSZF61q5dy5gxY1iyZAknnXQSTz31VKHznHPOOZx33nk89thjkW27du2iefPmfPjhh/Tu3bsSrlZERI4l6M/F44sv9XaRaAqPWVxsZl8B3YFzgbMAMjMzY9k0kUIC6w9BV8MzrAF5eY4cTxbkEFpOEGX5N6UgMYpcjr/oHXFezGO4oIO8QGib14P5PIWP8xgW5w1tyw2Ac2CGxYe3+YMQCHULtYTo/ej69etH165dmTVrFjfccAPOOZ5//nkmT57MKaecQnp6Om+88QY/+9nPAAgGg/z0pz+ladOmLF68mIyMDO64445CdY4aNYpJkybx6KOPRqYFfvXVV2nevDnnnXde1NouIiLHx+OLZ9nkn+CCh3+HmcfH6b9cEMNWSU1zRLDYH6BVq1axbZRI9ZUClBgxKkiMouxfv1/k9vhf9cTbviFudxY5f/gYAN/wU4i76KTQcff9Gw758ZyRSsIN3QDI/cuXBFfvwRokkfjQ+QD4/7UW/7x1ACRNHhjVtp9yyimsWLECgPnz55OVlUX//v0BuOaaa5g2bVokSJw/fz6rV69m3rx5NG/eHIAJEyZwySWXROq78sorueOOO/jss88iQeFLL73EyJEjq+W7ZERETmQu6IcCQWLR8/iJVDznnN/M/gW0BPbHuj0i1VAKsPVYhRQkChB6UWh+8DZ9+nRGjBiBzxf6eIwcOZK7776bdevWcfLJJ7Nq1SpatWoVCRABzj777EL1NW7cmIsvvpiZM2dy3nnnsWHDBhYuXMhf/vKXyrsoEREROeE45xywJdbtEKmmStXnVEFiFCU+cXHRO8JdSK1RrcNlvIfnDEp8pF/ofzyHM2zxvzgz0t00n29gO3z9T45uo8NWrVpFWloaP/74I7NnzyYvL4+pU6dG9gcCAaZPn84jjzxS6jpHjRrF2LFjeeaZZ3jppZfo3LkznTt3rojmi4iIiIhIlGh20yiyBF/RSzj4M48d3ubzHH1cOJgEsHhvaFt8gW0+T6RsNP373/9m5cqVXHbZZcycOZOWLVuyfPlyli1bFln+9Kc/MWPGDLSYc4IAAA48SURBVAKBAB07dmTz5s1s27YtUseiRYuOqnfYsGFkZ2czd+5cXnrpJUaNGhXVdouISHSYxwcFFvPob8giIjWZfgvUMDk5OWzfvp1AIMCOHTuYO3cuEydOZPDgwVx77bV0796dyy+/nNNOO63Qca1atWLcuHHMnTuXSy65hPbt2/Pzn/+cP/7xj2RmZnLfffcdda7k5GSGDx/O/fffz6pVqxg5cmRlXaaIiJRS0J9b5CQ1mt1URKTmUiaxhpk7dy7NmjWjbdu2DBgwgP/85z88/fTTvPXWWyxbtozly5dz2WWXHXVc3bp1ueCCC5g2bRoej4fZs2dz6NAhevTowQ033FBsN9RRo0axfPlyzjvvPFq3bl3RlyciImVUXCCoAFFEpOay0NhgKcjM6gAZGRkZ1KlTp9C+7OxsNmzYQFpaGomJ1fcFmnLi0WdTRESiLTMzk7p16wLUdc7pxYUiNYQyiSIiIiIiIhKhIFFEREREREQiFCSKiIiIiIhIRMyDRDP7pZltNLNsM1tsZj2OUb6emU02s21mlmNma8xs4PHUKSIiIiIiIiExDRLNbATwBPAHoBuwHJhnZk2KKR8PfAC0BS4HOgA3AlvKW6eIiIiIiIgcFutM4q+BvznnnnfO/Q+4GcgCri+m/PVAA2C4c26Bc26jc+5j59zy46izXDQrrFQ1+kyKiIiISDTELEgMZwW7A/PztznnguH1s4s5bCiwEJhsZjvM7L9mdq+ZeY+jTswswczq5C9ASnFl4+LiAMjKyirVdYpUlvzPZP5nVERERESkPHwxPHcjwAvsOGL7DuCUYo45CegHzAQGAunAFCCOUPfS8tQJMA54oDSN9nq91KtXj507dwJQq1YtzKw0h4pUCOccWVlZ7Ny5k3r16uH1emPdJBERERE5gcUySCwPD7ATuMk5FwC+MrMWwN2EgsTymkhoHGO+FOCH4gqnpqYCRAJFkaqgXr16kc+miIiIiEh5xTJI3A0EgKZHbG8KbC/mmG1AXjhAzLcKSA13NS1PnTjncoCc/PVjZQbNjGbNmtGkSRPy8vJKLCtSGeLi4pRBFBEREZGoiFmQ6JzLNbOvgAuAOQBm5gmvP1vMYQuAq83MEx5rCNAe2Oacyw3XUdY6y83r9eqLuYiIiIiIVCuxnt30CeBGM/u5mXUEpgLJwPMAZvaimU0sUH4qodlNnzKz9mY2CLgXmFzaOkVERERERKR4MR2T6Jx71cwaAw8CqcAyYIBzLn/imdZAsED5zWbWH/gzsILQ+xGfAh4rQ50iIiIiIiJSDNO71Y4Wfg1GRkZGBnXq1Il1c0RERERiIjMzk7p16wLUdc5lxro9IlI5TrTZTStVZqaehSIiIlJz6buQSM2kTGIRwq/VKPYVGCIiIiI1TEvn3JZYN0JEKoeCxCJY6B0YzYH9FXyq/PcxtqyEc0lhuvexofseO7r3saH7Hhu679GVAmx1+tIoUmOou2kRwg/BCv9rWYH3Me5XP//KpXsfG7rvsaN7Hxu677Gh+x51uociNUysX4EhIiIiIiIiVYiCRBEREREREYlQkBhbOcAfwv+VyqV7Hxu677Gjex8buu+xofsuInIcNHGNiIiIiIiIRCiTKCIiIiIiIhEKEkVERERERCRCQaKIiIiIiIhEKEgUERERERGRCAWJUWZmvzSzjWaWbWaLzaxHCWVHm5k7Ysk+ooyZ2YNmts3MDpnZfDNrV/FXcmKpgPs+o4gycyv+Sk48Zbn34fL1zGxy+DOdY2ZrzGzg8dRZE0X7vpvZ+CI+86sr/kpOLGV81nxUxD11ZvZugTJ6xpdSBdx7PedFRIqhIDGKzGwE8AShabe7AcuBeWbWpITDMoFmBZY2R+y/BxgL3Az0BA6G60yMbutPXBV03wHmHlFmZBSbXS2U9d6bWTzwAdAWuBzoANwIbClvnTVRRdz3sG8o/Jk/twKaf8Iqx2fzpxS+n6cBAeD1AmX0jC+FCrr3oOe8iEjRnHNaorQAi4FnC6x7CH0J+10x5UcD+0qoz4BtwF0FttUFsoGrYn29VWWJ9n0Pl5kBzIn1tVX1pRz3/mZgHRAXrTpr4lJB9308sCzW11aVl+P9bAJ3EPoDVXJ4Xc/4GN378DY957Vo0aKlmEWZxCgJ/6W+OzA/f5tzLhheP7uEQ2ub2SYz22xmb5lZpwL70oDUI+rMIPTLsqQ6a4wKuu/5+prZTjP71symmlnD6Lb+xFbOez8UWAhMNrMdZvZfM7vXzLzHUWeNUhH3vYB2ZrbVzNab2Uwza10R13AiitJncwzwinPuYHhdz/hSqKB7n0/PeRGRIihIjJ5GgBfYccT2HYS+BBTlW+B6YBhwDaGfx+dm1jK8P/+4stRZ01TEfYdQF6RrgQuA3wJ9gPeK+FJdk5Xn3p9EqLujFxgIPAT8Bvj9cdRZ01TEfYdQYDIaGADcQiiA+dTMUqLV8BPccX02w+PnTgP+XmCznvGlUxH3HvScFxEpli/WDajJnHMLCf11HwAz+xxYBfwCuD9W7aruSnPfnXOvFDhkpZmtINRdry/wYaU1tvrxADuBm5xzAeArM2sB3E1orJFUjGPed+fcewXKrzCzxcAm4EpgWiW3tzoaA6x0zi2JdUNqoCLvvZ7zIiLFUyYxenYTGhTf9IjtTYHtpanAOZcHLAXSw5vyjyt3nTVARdz3osqsD5+r2DI1UHnu/TZgTThQybcKSA13KTvun2cNUBH3/SjOuX3AGvSZz1fuz6aZJQNXcXSwrWd86VTEvT+KnvMiIocpSIwS51wu8BWhbisAmJknvL6wuOMKCndx6UzoCx3ABkK/AAvWWYfQDHilqrO6q6D7XlSZlkDDksrUNOW89wuA9HC5fO2Bbc653Gj8PKu7irjvRR1gZrWBk9FnHjjuZ80VQALwjyO26xlfChV074+i57yISAGxnjmnOi3ACEKz0v0c6Aj8BdgLNA3vfxGYWKD8/wMuJjReqBvwMnAIOLVAmd+G6xhKKJCZA6wHEmN9vVVlifZ9B2oDfwR6EXplwAWEvqCsARJifb1VaSnHvW9FaIbBZwgFKYMIjSu6r7R1aqmw+/44oTFZbYFzCL0yYxfQONbXW1WWst73Asd9SmjSlKLq1DM+Bvdez3ktWrRoKXnRmMQocs69amaNgQcJDaZfBgxwzuUPtm8NBAscUh/4W7jsXkK/oM5xzv2vQJlJQDLwV6Ae8Fm4zkIvf6/JKuC+B4AuhL6M1AO2Au8D9zvncir4ck4oZb33zrnNZtYf+DOwgtAU9k8Bj5WhzhqvIu470JLQH0waEgoOPwN6Oed2VfDlnDDK8azBzDoQet/kxcVUq2d8KVTAvddzXkSkBOaci3UbREREREREpIrQmEQRERERERGJUJAoIiIiIiIiEQoSRUREREREJEJBooiIiIiIiEQoSBQREREREZEIBYkiIiIiIiISoSBRREREREREIhQkioiIiIiISISCRBGRUjKzs80sYGbvxrotIiIiIhXFnHOxboOIyAnBzP4OHADGAB2cc1tj1I5451xuLM4tIiIi1Z8yiSIipWBmtYERwFTgXWD0EfuHmNkXZpZtZrvNbHaBfQlm9piZbTazHDP7zszGhPeNNrN9R9Q13MxcgfXxZrbMzG4wsw1Adnj7ADP7zMz2mdkeM3vHzE4+oq6WZvaymf1oZgfN7Esz62lmbc0saGZnHlH+DjPbZGb6/SAiIlJD6UuAiEjpXAmsds59C/wDuN7MDMDMBgGzgX8BZwAXAEsKHPsiMBIYC3QEfkEoI1kW6cBlwE+B08PbkoEngDPD5wwCs/MDvHBg+zHQAhgKdAUmAR7n3EZgPnDdEee5DpjhnAuWsX0iIiJSTfhi3QARkRPEGELBIcBcoC7QB/gIuA94xTn3QIHyywHMrD2hAPMi59z88L715Th/PHCtc25X/gbn3JsFC5jZ9cAu4FTgv8DVQGPgLOfcj+Fi3xU45O/Ac2b2a+dcjpl1AzoDw8rRPhEREakmlEkUETkGM+sA9ABeBnDO+YFXCQWOEMrsfVjM4acDAUIZveOxqWCAGG5Xu3BX0vVmlglsDO9qXeDcSwsEiEeaE27bpeH10cB/wllGERERqaGUSRQRObYxhJ6XW8M9TAEMyDGz24BDJRxb0j4IdRG1I7bFFVHuYBHb/glsAm4EthL6w99/CWUdj3lu51yumb0IXGdmswhlHn91jPaKiIhINadMoohICczMB1wL/IZQZi5/6UooMBsJrCA0JrAoKwk9a/sUs38XkGJmyQW2nV5M2YLtagh0AB52zn3onFsF1D+i2ArgdDNrUEJVfwcuBG4lFAjPOta5RUREpHpTJlFEpGSDCQVf05xzGQV3mNmbhLKMdwMfmtk64BVCz9aBzrnHnHMbzewFYLqZjSU0VrEN0MQ59xqwGMgCJpjZ00BPjpg5tRh7gT3ATWa2jVAX00ePKPMycC8wx8zGAdsITayz1Tm3EMA5t8rMFgGPAdOdc8fKfIqIiEg1p0yiiEjJxgDzjwwQw94kNLPoj8AVhGYQXQb8m9AYxny3AG8AU4DVwN8IzUxKeLzgNcBAQlnHkcD4YzUqPPvoVUB3Ql1M/0woWC1YJhe4GNhJaObVlcDvCI1DLGgaoS6q0491XhEREan+zDl37FIiIlJtmdn9wBXOuS6xbouIiIjEnjKJIiI1lJnVNrPTgNuAZ2LdHhEREakaFCSKiNRczwJfEXrXo7qaioiICKDupiIiIiIiIlKAMokiIiIiIiISoSBRREREREREIhQkioiIiIiISISCRBEREREREYlQkCgiIiIiIiIRChJFREREREQkQkGiiIiIiIiIRChIFBERERERkQgFiSIiIiIiIhLx/wF877BpY2E0hwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 750x600 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "analysis.tables_and_figures.make_zoom_plot(\n",
    "    Moji_plot_df, dpi = 100,\n",
    "    zoom_xlim=(0.6, 0.78), \n",
    "    zoom_ylim=(0.8, 0.98),\n",
    "    )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CgvMdvpqg_oi"
   },
   "source": [
    "## 6. Cutomize pipeline for fairness"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "IeJsYAhBeLeP"
   },
   "source": [
    "Check out the website [https://hanxudong.github.io/fairlib/](https://hanxudong.github.io/fairlib/) for detailed docs.\n",
    "\n",
    "- Visualization\n",
    "  - [Interactive plots](https://github.com/HanXudong/fairlib/blob/main/tutorial/interactive_plots.ipynb) demonstrates creating interactive plots for comparing different methods, and demonstrating DTO and constrained selection.\n",
    "  - [Plot gallery](https://hanxudong.github.io/fairlib/tutorial_notebooks/tutorial_plot_gallery.html) presents a list of examples for presenting experimental results, e.g., hyperparameter tuning and trade-off plots with zoomed-in area.\n",
    "\n",
    "\n",
    "- Customized Dataset and Models\n",
    "  - [The dataset document](https://hanxudong.github.io/fairlib/tutorial_customized_datasets_and_dataloaders.html) provides instructions for customizing datasets and dataloaders.\n",
    "  - [The model document](https://hanxudong.github.io/fairlib/tutorial_customized_models.html) provides instructions for customizing model architectures and register models.\n",
    "  - Besides text inputs, we also provide examples for customizing datasets and models with [structured inputs](https://hanxudong.github.io/fairlib/tutorial_notebooks/tutorial_COMPAS.html) and [images](https://hanxudong.github.io/fairlib/tutorial_notebooks/tutorial_colored_MNIST.html).\n",
    "\n",
    "\n",
    "- Customized Metrics\n",
    "  - This [document](https://hanxudong.github.io/fairlib/tutorial_customized_evaluation.html) provides instructions for customizing evaluation metrics.\n",
    "  - Single metric evaluations can be seen from [there](https://github.com/HanXudong/fairlib/blob/47f4b332e15ff8f22b238db6be983ec753fd2537/fairlib/src/evaluators/evaluator.py#L94).\n",
    "  - Metric aggregations such as the default root mean square aggregation can be found from [there](https://github.com/HanXudong/fairlib/blob/47f4b332e15ff8f22b238db6be983ec753fd2537/fairlib/src/evaluators/evaluator.py#L75).\n",
    "\n",
    "\n",
    "- Customized Debiasing Methods\n",
    "  - [Please see the document](https://hanxudong.github.io/fairlib/tutorial_customized_methods.html) for instructions about adding method-specific options and integrating methods with *fairlib*."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "fairlib_demo.ipynb",
   "provenance": [],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "fairlib_env38",
   "language": "python",
   "name": "fairlib_env38"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.15"
  },
  "vscode": {
   "interpreter": {
    "hash": "eb4eca40f7710e7c7146430b0424b585ee7a07b7e7498958627feae1c8ad8261"
   }
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "0598af4dcad946c3b5b27dc73dafda3a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_101c33c843274092888ae0b593e11084",
      "max": 39,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_267c639152c247bfbb01672e66107207",
      "value": 39
     }
    },
    "05c0c0bae60a4c958f6571576dfcd470": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "07824111751947f1af0e3f3409cf8897": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "08b65a34ffbf43fa94aa81bdfa88a839": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "0f5858dbd88d4a8f95d74f8c2f3df4ab": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "101c33c843274092888ae0b593e11084": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "155d359ac2d749169a0d52c591f0d8ea": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "1f572cf5213c400f86b91e4cb9c5ab03": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_223a07676d284ddc9f88eb557535be33",
       "IPY_MODEL_6d8e56dae7c74b51870b8f205f9c2a51",
       "IPY_MODEL_30564c39e4fc42f9a62391eb4ccbeef5"
      ],
      "layout": "IPY_MODEL_5cf1fb49370f458aa4b34f1d4654c3c0"
     }
    },
    "223a07676d284ddc9f88eb557535be33": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_9f28af0718b04e7489b8d81c554b8f0a",
      "placeholder": "​",
      "style": "IPY_MODEL_56054bc9fdae4f4aa8d1dd3b2230349e",
      "value": "100%"
     }
    },
    "267c639152c247bfbb01672e66107207": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "2821e713f31b46efa2e90d699e0dc83c": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "2980b492e74549938e9f0fb78237923d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_5456c00ca1a44bf3b7bece88b94250d3",
      "placeholder": "​",
      "style": "IPY_MODEL_f490accfcad641b19c214d9ea5bc422d",
      "value": " 39/39 [00:05&lt;00:00,  7.37it/s]"
     }
    },
    "29a861a0df0549bcba58054ef6558903": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "30564c39e4fc42f9a62391eb4ccbeef5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_7bc47b609afe4320a0c754fde01ba508",
      "placeholder": "​",
      "style": "IPY_MODEL_29a861a0df0549bcba58054ef6558903",
      "value": " 39/39 [00:05&lt;00:00,  8.66it/s]"
     }
    },
    "37c4e040cfea4f8c948c358014f0cd00": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_74be6f341a894c7682aad6de3b63c4cc",
       "IPY_MODEL_b9a94eeed9d241a4be13e1ab3b2540d8",
       "IPY_MODEL_88d78f31f08b48608809cd0a211a1fdb"
      ],
      "layout": "IPY_MODEL_155d359ac2d749169a0d52c591f0d8ea"
     }
    },
    "3c29777eb0e64033896044125f33ca3b": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "54535b16f2d3462bad55b950d081f572": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "5456c00ca1a44bf3b7bece88b94250d3": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "56054bc9fdae4f4aa8d1dd3b2230349e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "5ae45a0c9008496fb0e4347da96546d5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a43ba65c1600446f899efa4e5372f0ad",
      "placeholder": "​",
      "style": "IPY_MODEL_c2d89f3eb92e40b684686fac9636537a",
      "value": "100%"
     }
    },
    "5cf1fb49370f458aa4b34f1d4654c3c0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "686ff88b3e02409db49eef590197e51f": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_5ae45a0c9008496fb0e4347da96546d5",
       "IPY_MODEL_9dd2932943e24383a4cff1cc6df0fad4",
       "IPY_MODEL_c9f3ba4aa2c2405faf9ecb026b233379"
      ],
      "layout": "IPY_MODEL_0f5858dbd88d4a8f95d74f8c2f3df4ab"
     }
    },
    "6d8e56dae7c74b51870b8f205f9c2a51": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_c8f1fe9931524c4cb344fd8551e8d918",
      "max": 39,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_c3ad77793bd342308f942eeaf7c6db5e",
      "value": 39
     }
    },
    "7041c8004d7f4c2b9f22b200f60394bd": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_842e1f5c6d43472b9cb8690e3d2b6bc0",
      "placeholder": "​",
      "style": "IPY_MODEL_76c8de3762d948679a2241e3651476a5",
      "value": "100%"
     }
    },
    "74be6f341a894c7682aad6de3b63c4cc": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_79aacc7e95bd41d1a7491d300ce44408",
      "placeholder": "​",
      "style": "IPY_MODEL_a993fd47b6a24182a0769207fe5896ff",
      "value": "100%"
     }
    },
    "76c8de3762d948679a2241e3651476a5": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "79aacc7e95bd41d1a7491d300ce44408": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "7bc47b609afe4320a0c754fde01ba508": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "842e1f5c6d43472b9cb8690e3d2b6bc0": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "88d78f31f08b48608809cd0a211a1fdb": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_a99b784af7c747cb92b304e024cb45e7",
      "placeholder": "​",
      "style": "IPY_MODEL_a826fe75b14e466d9fbff54cd4fd78c7",
      "value": " 39/39 [00:04&lt;00:00,  9.36it/s]"
     }
    },
    "9dd2932943e24383a4cff1cc6df0fad4": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_2821e713f31b46efa2e90d699e0dc83c",
      "max": 39,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_07824111751947f1af0e3f3409cf8897",
      "value": 39
     }
    },
    "9f28af0718b04e7489b8d81c554b8f0a": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a43ba65c1600446f899efa4e5372f0ad": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "a826fe75b14e466d9fbff54cd4fd78c7": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a993fd47b6a24182a0769207fe5896ff": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "a99b784af7c747cb92b304e024cb45e7": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "b5e8af5d11954cdbbdb77bdb205e31ec": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HBoxModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HBoxModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HBoxView",
      "box_style": "",
      "children": [
       "IPY_MODEL_7041c8004d7f4c2b9f22b200f60394bd",
       "IPY_MODEL_0598af4dcad946c3b5b27dc73dafda3a",
       "IPY_MODEL_2980b492e74549938e9f0fb78237923d"
      ],
      "layout": "IPY_MODEL_3c29777eb0e64033896044125f33ca3b"
     }
    },
    "b9a94eeed9d241a4be13e1ab3b2540d8": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "FloatProgressModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "FloatProgressModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "ProgressView",
      "bar_style": "success",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_05c0c0bae60a4c958f6571576dfcd470",
      "max": 39,
      "min": 0,
      "orientation": "horizontal",
      "style": "IPY_MODEL_08b65a34ffbf43fa94aa81bdfa88a839",
      "value": 39
     }
    },
    "be8088868f094bee8ad0ca7a1e74e122": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c2d89f3eb92e40b684686fac9636537a": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    },
    "c3ad77793bd342308f942eeaf7c6db5e": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "ProgressStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "ProgressStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "bar_color": null,
      "description_width": ""
     }
    },
    "c8f1fe9931524c4cb344fd8551e8d918": {
     "model_module": "@jupyter-widgets/base",
     "model_module_version": "1.2.0",
     "model_name": "LayoutModel",
     "state": {
      "_model_module": "@jupyter-widgets/base",
      "_model_module_version": "1.2.0",
      "_model_name": "LayoutModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "LayoutView",
      "align_content": null,
      "align_items": null,
      "align_self": null,
      "border": null,
      "bottom": null,
      "display": null,
      "flex": null,
      "flex_flow": null,
      "grid_area": null,
      "grid_auto_columns": null,
      "grid_auto_flow": null,
      "grid_auto_rows": null,
      "grid_column": null,
      "grid_gap": null,
      "grid_row": null,
      "grid_template_areas": null,
      "grid_template_columns": null,
      "grid_template_rows": null,
      "height": null,
      "justify_content": null,
      "justify_items": null,
      "left": null,
      "margin": null,
      "max_height": null,
      "max_width": null,
      "min_height": null,
      "min_width": null,
      "object_fit": null,
      "object_position": null,
      "order": null,
      "overflow": null,
      "overflow_x": null,
      "overflow_y": null,
      "padding": null,
      "right": null,
      "top": null,
      "visibility": null,
      "width": null
     }
    },
    "c9f3ba4aa2c2405faf9ecb026b233379": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "HTMLModel",
     "state": {
      "_dom_classes": [],
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "HTMLModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/controls",
      "_view_module_version": "1.5.0",
      "_view_name": "HTMLView",
      "description": "",
      "description_tooltip": null,
      "layout": "IPY_MODEL_54535b16f2d3462bad55b950d081f572",
      "placeholder": "​",
      "style": "IPY_MODEL_be8088868f094bee8ad0ca7a1e74e122",
      "value": " 39/39 [00:05&lt;00:00,  7.89it/s]"
     }
    },
    "f490accfcad641b19c214d9ea5bc422d": {
     "model_module": "@jupyter-widgets/controls",
     "model_module_version": "1.5.0",
     "model_name": "DescriptionStyleModel",
     "state": {
      "_model_module": "@jupyter-widgets/controls",
      "_model_module_version": "1.5.0",
      "_model_name": "DescriptionStyleModel",
      "_view_count": null,
      "_view_module": "@jupyter-widgets/base",
      "_view_module_version": "1.2.0",
      "_view_name": "StyleView",
      "description_width": ""
     }
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
